売上データや費用の明細など、カテゴリごとに小計を出したい場面は、Excel業務の中でも頻出です。
たとえば、営業担当ごとの売上や、部門ごとの経費を集計する際に、「カテゴリの切れ目で自動的に小計を入れてほしい」と思ったことはないでしょうか。
そんなときに便利なのが、VBAで自動的に小計行を挿入する処理です。人の手で数式を入れる必要がなくなるため、工数の削減や集計ミスの防止につながります。
小計を挿入するマクロの基本構造
次のコードは、A列に記載されたカテゴリが変わるたびに小計行を挿入し、B列の数値を合計する処理です。
Dim i As Long
Dim startRow As Long
Dim lastRow As Long
Dim total As Double
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
startRow = 2 ' データの開始行
For i = startRow + 1 To lastRow + 1
If Cells(i, 1).Value <> Cells(i - 1, 1).Value Then
total = WorksheetFunction.Sum(Range(Cells(startRow, 2), Cells(i - 1, 2)))
Rows(i).Insert
Cells(i, 1).Value = "小計"
Cells(i, 2).Value = total
startRow = i + 1
i = i + 1
lastRow = lastRow + 1
End If
Next
この処理では次のような動作を行っています。
- A列でグループが切り替わる位置を判定
- 該当範囲のB列を合計
- 小計行を挿入して合計値を入力
- 処理位置を次のグループ先頭に更新
結果として、各グループの終わりに「小計」と表示され、該当データの合計値が並びます。
実装するメリット
この処理を実装することで得られる効果は、単なる「合計の自動化」以上に実務的です。
- 見落としを防止:人の手によるコピペ集計ミスをなくせる
- スピードアップ:定期レポートなどの定型業務を効率化
- レイアウトの統一:毎回同じ形式で小計を配置できる
- ユーザーが見やすい:パッと見てカテゴリ単位の集計が把握しやすい
特に、毎月の営業データや定期的な財務レポートを扱う方にとって、「構造化された表」は非常に大きな安心材料になります。
カスタマイズと応用
このマクロは非常に汎用性が高いため、次のようなカスタマイズも簡単にできます。
- 合計列をB列以外に変更(たとえば
Cells(i, 3)に変更) - 複数列を合計するように拡張(例:B列とC列を同時に合計)
- 小計の行に色や太字などの書式を適用
たとえば、次のようにすれば小計行に背景色をつけることも可能です。
Rows(i).Interior.Color = RGB(240, 240, 240)
また、全体の合計を最後に追加することも簡単です。必要に応じて末尾に追加処理を加えるだけで、トータルの一括集計が可能になります。
まとめ
カテゴリごとに小計を自動で挿入する処理は、Excel業務をよりわかりやすく、かつ正確に進めるための強力な武器になります。自動化することで、見やすさと効率を両立でき、実務での信頼性も高まります。
最後にポイントを整理します。
- A列の値が変わるたびに小計を自動挿入できる
- 合計対象は任意の列に変更でき、複数列にも対応可能
- 書式を加えることで見た目も整い、資料としての品質が向上
- 人手による集計ミスを防ぎ、レポート作業の負担を軽減できる
定型的な集計業務の多い方こそ、こうしたマクロをうまく活用して、Excelの見せ方を一段階引き上げてみてはいかがでしょうか。


