使用SUM()如果我有一組細胞在工作,我想加起來的,我可以用公式:在VBA
=SUM(Sheet1!A1:A10)
要在子做到這一點,我會用:
Sub example1()
Dim r As Range, v As Variant
Set r = Sheets("Sheet1").Range("A1:A10")
v = Application.WorksheetFunction.Sum(r)
End Sub
但是,如果我想在多個工作表添加了一個單細胞,我使用的公式:
=SUM(Sheet1:Sheet38!B2)
在VBA此行悲慘的失敗了,如解釋Specify an Excel range across sheets in VBA:
Sub dural()
v = Application.WorksheetFunction.Sum("Sheet1:Sheet3!B2")
End Sub
我有兩種解決方法。我可以通過編程一個循環的總和:
Sub example2()
Dim i As Long
Dim v As Variant
v = 0
For i = 1 To 38
v = v + Sheets(i).Range("B2")
Next i
End Sub
或使用Evaluate()
:
v = Evaluate("Sum(Sheet1:Sheet3!B2)")
是否有可能使用Application.WorksheetFunction.Sum()
此計算,或者我應該堅持的循環?
爲什麼不評價? – findwindow
我很久沒有做這個了,所以我不會把這個作爲答案加入,直到你可以嘗試,但是你不需要也可以使用:'Set r = Sheets(「Sheet1」) .Range(「Sheet1:Sheet3!B2」)'然後在'r'上做'Sum'?或者類似......無論您需要如何創建紙張範圍。儘管如此,你可能更喜歡使用其他方法之一。 – gmiley
@findwindow我使用'Evaluate()',它工作正常....但如果我必須根據動態範圍計算*(在所有工作表中相同)*,還有一個額外的步驟使得我必須提供字符串評價()' –