Excel VBA 逆引き集 | 集計処理

VBA
スポンサーリンク

集計処理(合計・平均・件数など)

Excel VBAでよく使うのが「集計処理」です。売上データや数量データをまとめて 合計・平均・件数・最大値・最小値 を求める場面は多いです。初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • Rangeを配列に読み込む → 大量データでも高速。
  • ループで集計 → 合計・件数・条件付き集計。
  • WorksheetFunctionを活用SumAverageCountMaxMin など。
  • Dictionaryを使えばグループ集計も可能

テンプレ1:合計を求める(ループ)

Sub Sum_Loop()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("C2:C100") ' 数量列
    Dim v As Variant: v = rg.Value

    Dim sumVal As Double, r As Long
    For r = 1 To UBound(v, 1)
        sumVal = sumVal + v(r, 1)
    Next r

    MsgBox "合計=" & sumVal
End Sub
VB
  • ポイント: 配列に読み込んでループで合計。

テンプレ2:平均を求める(WorksheetFunction)

Sub Average_Function()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("C2:C100")

    Dim avgVal As Double
    avgVal = WorksheetFunction.Average(rg)

    MsgBox "平均=" & avgVal
End Sub
VB
  • ポイント: WorksheetFunction.Average を使えば簡単。

テンプレ3:件数を求める(Count)

Sub Count_Function()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("C2:C100")

    Dim cnt As Long
    cnt = WorksheetFunction.Count(rg)

    MsgBox "件数=" & cnt
End Sub
VB
  • ポイント: 数値セルの件数を数える。

テンプレ4:最大値・最小値

Sub MaxMin_Function()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("C2:C100")

    Dim maxVal As Double, minVal As Double
    maxVal = WorksheetFunction.Max(rg)
    minVal = WorksheetFunction.Min(rg)

    MsgBox "最大値=" & maxVal & vbCrLf & "最小値=" & minVal
End Sub
VB
  • ポイント: MaxMin で範囲の最大・最小を取得。

テンプレ5:条件付き集計(If文)

Sub Sum_Condition()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("C2:C100") ' 数量列
    Dim v As Variant: v = rg.Value

    Dim sumVal As Double, r As Long
    For r = 1 To UBound(v, 1)
        If v(r, 1) >= 100 Then
            sumVal = sumVal + v(r, 1)
        End If
    Next r

    MsgBox "100以上の合計=" & sumVal
End Sub
VB
  • ポイント: 条件を満たすデータだけ集計。

テンプレ6:グループごとの集計(Dictionary)

Sub Sum_ByGroup()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("A2:C100") ' A=商品名, C=数量
    Dim v As Variant: v = rg.Value

    Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
    Dim r As Long, key As String
    For r = 1 To UBound(v, 1)
        key = v(r, 1) ' 商品名
        If dict.Exists(key) Then
            dict(key) = dict(key) + v(r, 3)
        Else
            dict(key) = v(r, 3)
        End If
    Next r

    ' 結果出力
    Dim k As Variant
    For Each k In dict.Keys
        Debug.Print k, dict(k)
    Next k
End Sub
VB
  • 結果例: りんご 250 みかん 180 バナナ 300

例題で練習

'例1:合計を求める
Sub Example1()
    Sum_Loop
End Sub

'例2:平均を求める
Sub Example2()
    Average_Function
End Sub

'例3:件数を求める
Sub Example3()
    Count_Function
End Sub

'例4:最大値・最小値
Sub Example4()
    MaxMin_Function
End Sub

'例5:条件付き集計
Sub Example5()
    Sum_Condition
End Sub

'例6:グループごとの集計
Sub Example6()
    Sum_ByGroup
End Sub
VB

初心者向けポイント

  • WorksheetFunctionを活用 → 合計・平均・件数・最大・最小が簡単に書ける。
  • 配列で処理すると高速 → 大量データでも一瞬。
  • 条件付き集計はIf文 → フィルタのような処理が可能。
  • Dictionaryでグループ集計 → 商品別・顧客別の集計に便利。

👉 この「集計処理テンプレ」を覚えておけば、売上データや数量データの 合計・平均・条件付き集計・グループ集計 を高速に実務へ応用できます。

タイトルとURLをコピーしました