【问题标题】:Calculate data from cells从单元格计算数据
【发布时间】:2022-01-08 10:44:17
【问题描述】:

我正在尝试从工作簿中收集和汇总数据。

我需要的数据是从工作簿一张表中的单元格计算出来的。我将以“仅值格式”显示结果。

如何缩短代码并使其运行得更快?

我收集数据的工作簿是 Test.xlsm,我有大约 30 个项目。

Sub Test1()
'
' Test1 Macro
   
    Dim Slaw150 As Variant
    Dim Slaw200 As Variant
    Dim Slaw300 As Variant
    Dim Slaw400 As Variant
    
    Slaw150 = "=SUM('[Test.xlsm]Test'!$CO$66:$CS$66,'[Test.xlsm]Test'!$CO$88:$CS$88,'[Test.xlsm]Test'!$CO$95:$CS$95)"
    Slaw200 = "=SUM('[Test.xlsm]Test'!$CO$67:$CS$67,'[Test.xlsm]Test'!$CO$89:$CS$89,'[Test.xlsm]Test'!$CO$96:$CS$96)"
    Slaw300 = "=SUM('[Test.xlsm]Test'!$CO$68:$CS$68,'[Test.xlsm]Test'!$CO$90:$CS$90,'[Test.xlsm]Test'!$CO$97:$CS$97)"
    Slaw400 = "=SUM('[Test.xlsm]Test'!$CO$69:$CS$69,'[Test.xlsm]Test'!$CO$91:$CS$91,'[Test.xlsm]Test'!$CO$98:$CS$98)"
    
    With Range("C42")
        .Value = Slaw150
        .Value = .Value
    End With
    
    With Range("C43")
        .Value = Slaw200
        .Value = .Value
    End With
    
    With Range("C44")
        .Value = Slaw300
        .Value = .Value
    End With
      
End Sub

【问题讨论】:

  • 我不明白你为什么要使用 VBA,你不能只复制单元格中的公式吗?
  • 您好,我使用了公式,然后当使用宏更新文件 Test.xlsm 时,发生错误并破坏了 Test.xlsm 宏。这就是为什么我的文件需要一个宏而不是公式的原因。如果您知道如何仅在需要时激活公式也可以解决我的问题。非常感谢

标签: excel vba excel-formula


【解决方案1】:

请测试下一个方法:

Sub TestSUMM()
   Dim sh As Worksheet, rngSUM As Range, arrSUM, i As Long
   
   Set sh = Workbooks("Test.xlsm").Sheets("Test")
   Set rngSUM = sh.Range("CO66:CS69,CO88:CS91,CO95:CS98") 'The whole discontinuous range
   ReDim arrSUM(1 To 4, 1 To 1)   'ReDim the array to keep processing result
   
   For i = 1 To rngSUM.rows.Count 'iterate between the discontinuous range rows and summarize them:
        arrSUM(i, 1) = WorksheetFunction.Sum(rngSUM.rows(i))
   Next i
   
   sh.Range("I41").Resize(4).Value = arrSUM 'drop the array content at once
End Sub

【讨论】:

  • 非常感谢您的帮助。但是,代码“Set sh = Workbooks("Test.xlsm").sheet("Test")”显示错误“Run-time erroe '9' Subscript out of range”。我相信它无法检测到 Test.xlsm 文件。你能帮帮我吗!
  • @Minh Nguyen 应该是Workbooks("Test.xlsm").Sheets("Test")...
猜你喜欢
  • 2023-02-05
  • 2011-04-21
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多