Excel売上台帳を月別に自動集計するVBAマクロ【実務で使える手順】

ExcelVBA

・はじめに

取引先の担当者様から「決算月なので、取引先別 × 年月単位の売上一覧を提出してほしい」と依頼を受けたことが、今回のVBA作成のきっかけでした。

売上データは請求日ごとに管理されており、フィルターを使えば手作業でも集計できます。しかし、

  • 集計ミスが起きやすい
  • 作業時間がかかる
  • 毎月のルーティン作業としては非効率

といった課題があり、より正確で効率的な方法を探す必要がありました。

そこで、Excel VBAでピボットテーブルを自動生成し、月別・取引先別の売上を一瞬で集計できる仕組みを作成しました。本記事では、その実際のコードと使い方を紹介します。

・今回のVBAでできること

このVBAを使うと、次のような処理を自動化できます。

  • 明細(1行ごと)で管理している売上データを自動で集計
  • 月別 × 取引先別の売上表をピボットテーブルで作成
  • ボタン1つで集計表を更新
  • 手作業のフィルター作業や転記作業をゼロにできる

実務で使える形にしているので、月次資料の作成が大幅に楽になります。

・こんな方におすすめ

  • 明細データを区分ごとに手作業で集計している
  • 毎回ピボットテーブルを作成して集計している
  • 月次資料の作成に時間がかかっている
  • VBAで業務を自動化したい
  • 集計ミスを減らしたい

・サンプル(完成イメージ)

「取引先別集計」ボタンをクリックすると、次のようなピボットテーブルが自動で作成されます。
縦軸:年月別
横軸:取引先別
値:売上金額(合計)
毎月の売上推移や取引先別の比較が一目でわかる表が完成します。

・VBAコード(ボタンに設定する処理)

Private Sub CommandButton1_Click()
'ピボットテーブルの作成
    Dim pvCacheData As PivotCache, pvTableData As PivotTable

    'ピボットテーブルが1つの場合は更新をする。
    If ActiveSheet.PivotTables.Count = 1 Then
        ActiveSheet.PivotTables(1).PivotCache.Refresh
        Exit Sub
    End If
    
    'ピボットの範囲を設定
    Set pvCacheData = ActiveWorkbook.PivotCaches.Create _
            (SourceType:=xlDatabase, SourceData:=Range("A2:D" & Range("A2").CurrentRegion.Rows.Count & ""))
    'ピボットテーブルを作成
    Set pvTableData = pvCacheData.CreatePivotTable _
            (TableDestination:=Range("G2"), TableName:="売上集計")
    
    With pvTableData
        .PivotFields("請求日").Orientation = xlRowField
        .PivotFields("取引先").Orientation = xlColumnField
        .AddDataField Field:=pvTableData.PivotFields("金額"), _
                      Caption:="合計金額", Function:=xlSum
        .PivotFields("合計金額").NumberFormat = "#,##0"
        
        '年月単位で集計
        Range("G4").Group periods:=Array(False, False, False, False, True, False, True)
        
    End With
    
End Sub

・まとめ

ピボットテーブルを知るまでは、フィルターを使って手作業で集計していました。しかし、VBAで自動化することで、

  • 集計ミスが減る
  • 作業時間が大幅に短縮される
  • 毎月のルーティン作業が効率化される

といったメリットを実感しています。

この記事の内容は、私自身の実務経験をもとにまとめています。
同じように売上集計で悩んでいる方の助けになれば嬉しいですし、この記事をきっかけにVBAに興味を持っていただけたら幸いです。

ここまで読んでいただき、ありがとうございます。

・ご注意

・掲載されている内容には細心の注意をしてるつもりですが、
間違いやご指摘等がありましたら、「お問い合わせ」からご連絡をいただけますと幸いです。
・掲載されている入力VBAコード等は動作を保証するものではなく、あくまでサンプルとして掲載しております。
・掲載されている入力VBAコード等は自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
・対応バージョン
 Excel2021、2019、2016

コメント