Excel VBAで商品カテゴリ別の売上報告書を自動生成する方法

Excel VBAを使用して、商品カテゴリ別の売上報告書を自動生成する方法を解説します。この記事では、基本的なVBAコードの設定から、応用例としてのさまざまなカスタマイズ方法までを詳しく紹介します。Excel VBAの自動化機能を活用して、日々の業務効率を向上させましょう。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的な売上報告書の自動生成

Excel VBAを使用して、商品カテゴリ別の売上を集計し、報告書として出力する基本的な手順を解説します。

VBAコードの基本形

以下のVBAコードは、商品カテゴリ別の売上を集計して、新しいワークシートに出力するものです。


Sub CreateSalesReport()
    Dim LastRow As Long
    Dim ReportSheet As Worksheet

    ' 元のデータが存在するシートを選択
    Sheets("Data").Select

    ' 最後の行を取得
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' データの集計
    Range("A1:B" & LastRow).Select
    Application.CutCopyMode = False
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Data!R1C1:R" & LastRow & "C2", Version:=6).CreatePivotTable TableDestination:= _
        "Report!R3C1", TableName:="SalesReport", DefaultVersion:=6

    ' レポートシートの設定
    Set ReportSheet = Sheets("Report")
    ReportSheet.PivotTables("SalesReport").AddDataField ReportSheet.PivotTables( _
        "SalesReport").PivotFields("売上"), "合計", xlSum
    ReportSheet.PivotTables("SalesReport").PivotFields("商品カテゴリ").Orientation = _
        xlRowField
End Sub

コードの解説

このコードは以下の流れで動作します。
1. 商品データが保存されているシートを選択。
2. 最後の行を特定してデータの範囲を確定。
3. ピボットテーブルを使用して、商品カテゴリ別の売上を集計。
4. 新しいワークシートに集計結果を出力。

応用例1: 売上の昇順・降順のソート

集計結果を売上の昇順または降順でソートする方法を追加します。

VBAコード


Sub SortSalesReport()
    Sheets("Report").Select
    ActiveSheet.PivotTables("SalesReport").PivotFields("合計").AutoSort _
        xlDescending, "合計"
End Sub

コードの解説

このコードは、集計結果を”合計”の降順(最大から最小)でソートします。昇順にする場合は、`xlDescending`を`xlAscending`に変更します。

応用例2: グラフを用いた可視化

集計結果をグラフで可視化する方法を紹介します。

VBAコード


Sub CreateSalesGraph()
    Sheets("Report").Select
    Range("A1:B10").Select
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Range("Report!$A$1:$B$10")
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Report"
End Sub

コードの解説

このコードは、集計結果の範囲を選択し、棒グラフを作成してレポートシートに挿入します。

応用例3: 過去の売上データとの比較

前月の売上データと比較して、増減を計算する方法を追加します。

VBAコード


Sub CompareWithLastMonth()
    Dim LastRow As Long
    Sheets("Report").Select
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Range("C2").Value = "前月比"
    Range("C3").FormulaR1C1 = "=RC[-1]-VLOOKUP(RC[-2],Data!C1:C2,2,0)"
    Range("C3").AutoFill Destination:=Range("C3:C" & LastRow)
End Sub

コードの解説

このコードは、VLOOKUP関数を使用して、現在の月の売上と前月の売上を比較し、差額を計算します。結果は”前月比”として新しい列に表示されます。

まとめ

Excel VBAを活用することで、商品カテゴリ別の売上報告書の自動生成や、さまざまなカスタマイズが可能です。基本的なコードから応用例まで、この記事を参考に日々の業務の効率化を図りましょう。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次