で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
は、私が式を使用:で説明したように、この行は、無残に失敗したVBAで
=SUM(Sheet1:Sheet38!B2)
Specify an Excel range across sheets in VBA:
Sub dural()
v = Application.WorksheetFunction.Sum("Sheet1:Sheet3!B2")
End Sub
私は2つの回避策があります。
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()'を使っていますが、うまくいきます。しかし、ダイナミックレンジに基づいて計算する必要がある場合は(*すべてのシートで同じです)*、追加のステップがあります。 (評価版) –