【问题标题】:Sum same cell across multiple workbooks跨多个工作簿对同一单元格求和
【发布时间】:2020-08-31 17:43:03
【问题描述】:

我在不同的工作簿中有每周时间表。在月底,我需要在创建月度发票时汇总所有工作簿中的所有小时数。工作表名称和单元格地址在所有工作簿中都相同。工作表名称为“Weekly ACT Rpt Billable”。总小时数存储在单元格 I21 中,因此地址为“Weekly ACT Rpt Billable”!$I$21。

我想要一个对所有打开的工作簿中的所有“每周 ACT Rpt Billable”求和的宏!$I$21。

这是我目前所拥有的。它适用于 1 个工作簿,但不适用于超过 1 个打开的工作簿

Sub SumCellOpenWorkbooks()
    Dim iWbCount As Integer, sSumAddress As String
    
    For iWbCount = 1 To Workbooks.Count
        
        If Not (Workbooks(iWbCount).Name = "PERSONAL.XLSB" Or Workbooks(iWbCount).Name = "Book1") Then
            sSumAddress = "'[" & Workbooks(iWbCount).Name & "]" & "Weekly ACT Rpt Billable'!" & "$I$21"
            Debug.Print sSumAddress
            ActiveSheet.Range("A1").Formula = "=sum(" & sSumAddress & ")"
        End If
    Next
    
End Sub

【问题讨论】:

  • 您为循环中的每个工作簿覆盖 A1 中的公式。您是否需要一个公式,或者您可以在循环中保留一个运行总计,然后在您完成循环后将其添加到 A1?
  • 我会考虑一个汇总表,每个工作簿都有一个单元格,然后检查缺失值更容易......

标签: excel vba excel-formula


【解决方案1】:

这个怎么样?

For iWbCount = 1 To Workbooks.Count
        
    If Not (Workbooks(iWbCount).Name = "PERSONAL.XLSB" Or Workbooks(iWbCount).Name = "Book1") Then
        If sSumAddress = "" Then
            sSumAddress = "'[" & Workbooks(iWbCount).Name & "]" & "Weekly ACT Rpt Billable'!" & "$I$21"
        Else
            sSumAddress = sSumAddress & ",'[" & Workbooks(iWbCount).Name & "]" & "Weekly ACT Rpt Billable'!" & "$I$21"
        End If
        Debug.Print sSumAddress
    End If
Next
ActiveSheet.Range("A1").Formula = "=sum(" & sSumAddress & ")"

【讨论】:

  • 谢谢,成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多