Excel VBAを用いた在庫品目別売上レポートの自動作成方法

この記事では、Excel VBAを使用して、在庫品目別の売上レポートを自動生成する方法について詳しく解説します。ExcelのVBAを用いることで、時間のかかる作業を効率的に行うことができます。実際のコード例とともに、その構造や応用例を通じて、Excel VBAの魅力と活用方法を深く理解していただけるように構成しています。

目次

Excel VBAの基本

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

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

VBAでの売上レポート作成の基礎知識

Excel VBA(Visual Basic for Applications)は、Excelの機能をさらに強化するためのプログラミング言語です。VBAを用いることで、定型的な作業を自動化したり、複雑な計算や処理を行ったりすることができます。

売上レポートの必要性

在庫管理における売上レポートは、商品の動きを把握する上で非常に重要です。どの商品がよく売れているのか、どの商品が滞留しているのかを知ることで、在庫の調整や次の仕入れ方針を決定するのに役立ちます。

VBAの利点

手動でレポートを作成する場合、時間がかかるだけでなく、ミスのリスクもあります。VBAを使用することで、これらの作業を高速化し、ミスのリスクを低減することができます。

在庫品目別売上レポートのコード例

Sub CreateSalesReport()

    Dim LastRow As Long
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("SalesData")

    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    'ヘッダー部の設定
    ws.Range("E1").Value = "品目"
    ws.Range("F1").Value = "合計売上"

    '品目別の合計を計算
    ws.Range("E2").Resize(LastRow - 1, 1).Value = ws.Range("A2:A" & LastRow).Value
    ws.Range("E2:E" & LastRow).RemoveDuplicates Columns:=1, Header:=xlNo
    ws.Range("F2").Resize(LastRow - 1, 1).Formula = "=SUMIF(A:A,E2,B:B)"

End Sub

コードの詳細解説

このコードでは、”SalesData”という名前のワークシートに記載されている売上データから、品目別の売上合計をE列とF列に出力します。

1. `Dim`で変数を宣言します。
2. `LastRow`はデータが入っている最後の行を取得するための変数です。
3. `Set ws = ThisWorkbook.Sheets(“SalesData”)`で、操作対象のワークシートを設定します。
4. ヘッダー部をE1とF1に設定します。
5. E列に品目名をコピーして、`RemoveDuplicates`メソッドで重複を削除します。
6. F列には、`SUMIF`関数を使用して、品目ごとの売上合計を計算します。

応用例

1. グラフを自動で作成する

Sub CreateGraph()

    Dim LastRow As Long
    Dim ws As Worksheet
    Dim ch As Chart

    Set ws = ThisWorkbook.Sheets("SalesData")
    LastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row

    'グラフを作成
    Set ch = ws.Shapes.AddChart2(251, xlColumnClustered).Chart
    ch.SetSourceData Source:=ws.Range("E1:F" & LastRow)

End Sub

2. 売上が一定額以上の品目をハイライトする

Sub HighlightHighSales()

    Dim LastRow As Long
    Dim ws As Worksheet
    Dim cell As Range

    Set ws = ThisWorkbook.Sheets("SalesData")
    LastRow = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row

    '5000以上の売上をハイライト
    For Each cell In ws.Range("F2:F" & LastRow)
        If cell.Value >= 5000 Then
            cell.Interior.Color = vbYellow
        End If
    Next cell

End Sub

3. 売上合計を新しいワークシートに出力する

Sub CreateNewSheetReport()

    Dim LastRow As Long
    Dim ws As Worksheet, newWs As Worksheet

    Set ws = ThisWorkbook.Sheets("SalesData")
    Set newWs = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    newWs.Name = "Report"

    LastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row

    'データを新しいワークシートにコピー
    ws.Range("E1:F" & LastRow).Copy newWs.Range("A1")

End Sub

まとめ

Excel VBAを活用することで、在庫品目別の売上レポートの作成を効率的に行うことができます。この記事で示した基本的な方法を理解し、応用例を参考にして、独自の売上レポートの自動生成方法を開発してみてください。

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

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

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

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

コメント

コメントする

目次