Excelで複数の範囲に対して累計を自動で計算する作業は、VBAを使うと効率的に行えます。特に、同じパターンが複数箇所に繰り返される場合、手動で設定するとミスや時間のロスが発生しやすいため、初心者でも扱えるVBAマクロを活用する方法を解説します。
基本的な累計計算の考え方
累計とは、ある列の各セルに対して、そのセルまでの合計を表示する操作です。たとえば、A列に入力された数値をB列に累計表示する場合、B1にはA1、B2にはB1+A2、B3にはB2+A3のように計算されます。
この操作を手動で繰り返すのではなく、VBAマクロで範囲を指定することで自動化できます。
複数範囲に対応するVBAマクロの作成
初心者でも理解しやすい方法として、まず範囲を配列で指定する方法があります。例えば、累計したいセル範囲を配列に入れて、For Eachループで順番に処理する方法です。
具体例として、以下のように記述します。
例:
Dim rng As Range
Dim r As Range
Dim sumVal As Double
Dim ranges As Variant
ranges = Array(“A1:A10”, “D11:D21”, “F11:F21”)
For Each rng In ranges
sumVal = 0
For Each r In Range(rng)
sumVal = sumVal + r.Value
r.Offset(0, 1).Value = sumVal
Next r
Next rng
この例では、A1:A10、D11:D21、F11:F21という複数の範囲に対して累計をB列、E列、G列に順次計算して表示します。
範囲を自由に指定する方法
配列に複数の範囲を追加することで、希望する箇所すべてに累計を設定できます。たとえば、D23:D33、F23:F33、I23:I33のような複数ブロックも追加可能です。
初心者でも簡単に範囲を増やすには、配列に文字列でセル範囲を追記するだけです。
注意点と実例
累計計算をVBAで行う場合、空白セルや文字列があるとエラーになることがあります。その場合は、数値かどうかを判定して加算する処理を追加すると安全です。
例えば、If IsNumeric(r.Value) Then sumVal = sumVal + r.Value のように条件分岐を入れると、文字列が含まれてもエラーが発生せず累計できます。
まとめ
Excelで複数箇所に累計を設定する場合、VBAマクロを使うと初心者でも簡単に自動化できます。範囲を配列で指定してFor Eachループで処理することで、A列からB列、D列からE列のように複数の範囲に累計を反映可能です。また、空白や文字列が含まれる場合の対策も組み込むことで、安定したマクロ運用ができます。
詳細なVBAの書き方や実例についてはMicrosoft公式VBAリファレンスをご参照ください。


コメント