Excel VBAを使用した顧客の注文履歴報告書の生成方法

この記事では、Excel VBAを使用して、顧客の注文履歴報告書を生成する方法を詳しく解説します。具体的なコード例、その解説、および応用例を通じて、実務で役立つ知識を獲得できるように構成しています。

目次

Excel VBAの基本

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

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

基本の報告書生成コード

Excel VBAを用いて、簡易な注文履歴報告書を作成する基本的なコードを示します。


Sub CreateOrderHistoryReport()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("注文履歴")
    
    ws.Range("A1").Value = "注文ID"
    ws.Range("B1").Value = "顧客名"
    ws.Range("C1").Value = "商品名"
    ws.Range("D1").Value = "数量"
    ws.Range("E1").Value = "注文日"
End Sub

コード解説

このコードは新しいワークシート「注文履歴」を作成し、それに5つのカラム(注文ID、顧客名、商品名、数量、注文日)を設定するものです。

応用例

1. データの自動入力

データを自動的に入力するためのサンプルコードを以下に示します。


Sub AutoInputData()
    Dim ws As Worksheet
    Dim LastRow As Long
    Set ws = ThisWorkbook.Sheets("注文履歴")
    
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
    
    ws.Range("A" & LastRow).Value = InputBox("注文IDを入力してください。")
    ws.Range("B" & LastRow).Value = InputBox("顧客名を入力してください。")
    ws.Range("C" & LastRow).Value = InputBox("商品名を入力してください。")
    ws.Range("D" & LastRow).Value = InputBox("数量を入力してください。")
    ws.Range("E" & LastRow).Value = Date
End Sub

解説

このコードは、注文履歴のワークシートに新しい行を追加し、各カラムに対応するデータを入力ボックスを使って取得します。

2. 注文履歴のフィルタリング

特定の顧客名を基に注文履歴をフィルタリングするサンプルコードを以下に示します。


Sub FilterOrderHistory()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("注文履歴")
    
    Dim customerName As String
    customerName = InputBox("フィルタリングしたい顧客名を入力してください。")
    
    ws.Range("A1:E1").AutoFilter Field:=2, Criteria1:=customerName
End Sub

解説

このコードは、顧客名のカラム(B列)を基に特定の顧客の注文履歴のみを表示します。

3. 報告書の自動保存

注文履歴を別のワークブックとして自動保存するサンプルコードを以下に示します。


Sub SaveOrderHistoryReport()
    Dim ws As Worksheet
    Dim newWb As Workbook
    Set ws = ThisWorkbook.Sheets("注文履歴")
    
    ws.Copy
    Set newWb = ActiveWorkbook
    
    newWb.SaveAs "C:\path\to\save\注文履歴_" & Format(Date, "yyyymmdd") & ".xlsx"
    newWb.Close
End Sub

解説

このコードは、注文履歴ワークシートを新しいワークブックとして保存し、保存日付をファイル名に追加します。

まとめ

Excel VBAを使用して、顧客の注文履歴報告書を効率的に作成、管理する方法を学びました。これらのコードを組み合わせることで、より高度な報告書の生成や管理が可能となります。

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

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

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

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

コメント

コメントする

目次