Excel VBA 繰り返し計算の自動化や条件付きの集計で合計計算する方法

 

Excel VBA 繰り返し計算の自動化や条件付きの合計計算で、集計は効率的に実行できます。 使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

Excel VBAで挫折しないポイント
資格試験で使う体系的な教材を活用すれば、効率よくスキルを身につけること!
👉 VBAエキスパート資格のメリットを詳しく知る

 

Excel VBA 繰り返し計算の自動化や条件付きの集計|シーン

以下のシーンで利用します。

1.繰り返し処理で特定範囲の数値を合計する(Forループを使用)

2.特定の条件に合致する値だけを合計する(If条件を加える)

3.範囲を指定して一括で合計する(WorksheetFunction.Sumを使用)

 

Excel VBA 繰り返し計算の自動化や条件付きの集計サンプルコード

A列のデータを1行ずつ読み取って合計する場合

Option Explicit

Sub SumWithLoop()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1") ' シート指定
    
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' A列の最終行取得
    
    Dim total As Double
    total = 0 ' 初期化
    
    Dim i As Long
    For i = 1 To lastRow
        total = total + ws.Cells(i, 1).Value ' A列の値を合計
    Next i
    
    MsgBox "合計: " & total
End Sub

・空白セルがあるとエラーになる可能性があるため、データの整合性を確認すること
・最終行を取得することで、データの増減に対応可能

B列が「売上」のとき、A列の値を合計

Option Explicit

Sub SumWithCondition()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    Dim total As Double
    total = 0
    
    Dim i As Long
    For i = 1 To lastRow
        If ws.Cells(i, 2).Value = "売上" Then ' 条件を満たす場合のみ加算
            total = total + ws.Cells(i, 1).Value
        End If
    Next i
    
    MsgBox "売上の合計: " & total
End Sub

・比較対象("売上" など)は必ず正確な文字列にすること!(半角・全角に注意)
・条件が増える場合は Select Case を活用すると可読性が向上

 

Excel VBAで挫折しないポイント
資格試験で使う体系的な教材を活用すれば、効率よくスキルを身につけること!
👉 VBAエキスパート資格のメリットを詳しく知る

 

A列全体の合計をシンプルに求める場合

Option Explicit

Sub SumWithRange()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    Dim total As Double
    total = Application.WorksheetFunction.Sum(ws.Range("A:A")) ' A列全体を合計
    
    MsgBox "A列の合計: " & total
End Sub

・範囲が広すぎると処理が遅くなるため、必要な範囲だけ指定するのがベスト(例: "A1:A100")
・空白セルやエラー値があるとエラーになる可能性があるので、事前にチェック

 

Excel VBAで挫折しないポイント
資格試験で使う体系的な教材を活用すれば、効率よくスキルを身につけること!
👉 VBAエキスパート資格のメリットを詳しく知る

 

B列が「売上」のとき、A列の値を合計

Option Explicit

Sub SumIfCondition()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    Dim total As Double
    total = Application.WorksheetFunction.SumIf(ws.Range("B:B"), "売上", ws.Range("A:A"))
    
    MsgBox "売上の合計: " & total
End Sub

・SUMIF関数を使うことでループ処理より高速化可能
・条件列と合計列の範囲は同じ行数にすること

Excel VBA 繰り返し計算の自動化や条件付きの集計まとめ

方法 効果 注意点
Forループで合計 シンプルな繰り返し合計 データの最終行を取得する
条件付き合計(If) 条件に応じた合計 文字列の比較ミスに注意
範囲の合計(Sum関数) 一括で高速に合計 範囲指定を適切に
SUMIF関数を使用 条件付きの合計を効率化 条件列と合計列の範囲を揃える

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!