我正在尝试从每个工作表中获取H列的总和。工作表的名称在A列中给出
我一直使用的方式是使用= SUM('BSF10003'!H:H),向下拖动此公式并手动更改最后几位数字,但是如果有100列以上,这将是一个漫长的过程。
我是VBA的新手,希望有一种方法可以更快地完成此任务
再次感谢!
答案 0 :(得分:2)
INDIRECT
函数是另一种方法。以下示例,
=SUM(INDIRECT("'"& A2 &"'!H:H"))
A2 =工作表名称
INDIRECT
使您可以动态引用。
答案 1 :(得分:1)
一种方法可能是UDF
将此内容粘贴到模块中
Function SumSheets(ByVal SheetName As String) as Double
SumSheets=Application.WorksheetFunction.Sum(Worksheets(SheetName).Range.Columns(8))
End Function
并像标准公式一样使用它...
=SumSheets(A1)
将返回A1中命名的工作表中H列的总和
或者作为变体,您可以将其与UDF一起使用。您可以将其粘贴到与UDF相同的模块中,但无需键入公式。而是在列中选择一个单元格并运行此宏。 公式会自动添加。
Sub FillRangeWithSumSheets()
Dim n As Name: Dim s As String: s = "SumSheetsRange"
With ActiveWorkbook
For Each n In .Names
If n.Name = s Then
n.Delete
Exit For
End If`
Next
Set n = .Names.Add(s, "=OFFSET($A1,0," & ActiveCell.Column - 1 & ",COUNTA(Sheet1!$A:$A),1)")
n.Visible = 1
Range(s).Formula = "=SumSheets(A1)"
End With
End Sub