Excel VBAを使用した年齢層別の商品売上集計の方法

この記事では、Excel VBAを使用して、年齢層別の商品売上を集計する方法について詳しく説明します。実用的なコード例とその解説を通じて、具体的な実装方法を理解するとともに、応用例も取り上げています。

目次

Excel VBAの基本

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

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

基本のコード

以下は、年齢層別に商品売上を集計する基本的なVBAコードです。


Sub SalesAnalysisByAgeGroup()
    Dim LastRow As Long
    Dim i As Long
    Dim Age As Long
    Dim AgeGroup As String
    
    'データが入っている最後の行を取得
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, 1).End(xlUp).Row
    
    '見出しを作成
    ThisWorkbook.Sheets("Sheet1").Cells(1, 3).Value = "年齢層"
    ThisWorkbook.Sheets("Sheet1").Cells(1, 4).Value = "売上"
    
    '年齢層別の売上を集計
    For i = 2 To LastRow
        Age = ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value
        If Age < 20 Then
            AgeGroup = "10代"
        ElseIf Age < 30 Then
            AgeGroup = "20代"
        ElseIf Age < 40 Then
            AgeGroup = "30代"
        ElseIf Age < 50 Then
            AgeGroup = "40代"
        Else
            AgeGroup = "50代以上"
        End If
        
        ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value = AgeGroup
        ThisWorkbook.Sheets("Sheet1").Cells(i, 4).Value = ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value
    Next i
End Sub

コードの詳細解説

このコードは、年齢データがA列に、売上データがB列に入力されている前提で作成されています。

- `Dim`を使用して、必要な変数を宣言しています。
- `LastRow`は、データが入っている最後の行を特定するための変数です。
- `AgeGroup`は、年齢層を格納するための変数です。
- `For i = 2 To LastRow`のループで、各行のデータを読み取り、年齢に応じて年齢層を決定しています。
- `If`文を使って年齢層を分けており、それぞれの年齢範囲に応じて、`AgeGroup`に値を設定しています。
- 最後に、C列に年齢層とD列に売上データを出力しています。

応用例1:年齢層別の合計売上を計算する

年齢層別の売上をさらに合計して、E列に出力する応用的なコードを紹介します。


Sub SumSalesByAgeGroup()
    Dim AgeGroupRange As Range
    Dim UniqueGroups As Collection
    Dim Group As Variant
    Dim SumSales As Double
    Dim LastRow As Long
    Dim i As Long

    '売上データの最後の行を取得
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, 3).End(xlUp).Row
    
    'C列の年齢層データを取得
    Set AgeGroupRange = ThisWorkbook.Sheets("Sheet1").Range("C2:C" & LastRow)
    
    'Uniqueな年齢層のリストを作成
    Set UniqueGroups = New Collection
    On Error Resume Next
    For Each cell In AgeGroupRange
        UniqueGroups.Add cell.Value, CStr(cell.Value)
    Next cell
    On Error GoTo 0

    'E列に見出しを作成
    ThisWorkbook.Sheets("Sheet1").Cells(1, 5).Value = "年齢層の合計売上"
    
    'Uniqueな年齢層ごとに売上を合計
    For Each Group In UniqueGroups
        SumSales = Application.WorksheetFunction.SumIf(AgeGroupRange, Group, ThisWorkbook.Sheets("Sheet1").Range("D2:D" & LastRow))
        ThisWorkbook.Sheets("Sheet1").Cells(UniqueGroups.Item(Group) + 1, 5).Value = SumSales
    Next Group
End Sub

応用例2:年齢層別の平均売上を計算する

応用例3:年齢層別の売上の最大値と最小値を取得する

まとめ

Excel VBAを使用すれば、年齢層別の売上分析などのデータ分析作業を効率化することができます。この記事で紹介した基本的なコードと応用例を参考に、自身の業務に応じたカスタマイズを行うことができます。データ分析の幅を広げるために、VBAの学習を深めることをおすすめします。

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

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

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

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

コメント

コメントする

目次