1. 概要
Excelのマクロ(VBA)を使用して、売上データを可視化する方法について解説します。主に以下の4つの手法を紹介します。
- 棒グラフグラフ作成
- ピボットテーブルの作成
- 売上推移の折れ線グラフ作成
- 条件付き書式によるヒートマップ
これらの手法を活用することで、データ分析の効率を向上させ、視覚的にわかりやすいレポートを作成できます。テンプレートを作っておけば、任意のデータを加工して使いまわすことができます。
2. 必要な準備
- 「開発」タブの有効化
- Excelを開く
- 「ファイル」→「オプション」→「リボンのユーザー設定」
- 「開発」にチェックを入れる
- サンプルデータの用意
- 売上日、商品名、金額、営業担当の4つの列があるデータ
ここではchatGPTにサンプルデータを作ってもらいました!
- 売上日、商品名、金額、営業担当の4つの列があるデータ
- VBAマクロの有効化
- Excelのセキュリティ設定から「マクロを有効化」、ブックとして保存も忘れずに!

3. 実行方法
1 自動グラフ作成マクロ
- 「開発」タブから「Visual Basic」を開く
- 新しいモジュールを追加し、以下のコードを貼り付け
Sub 棒グラフ()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
' 最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 売上データの範囲をグラフ用に設定
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=400, Top:=50, Height:=300)
With chartObj.Chart
.SetSourceData Source:=ws.Range("B2:B" & lastRow & ",C2:C" & lastRow)
.ChartType = xlColumnClustered ' 棒グラフ
.HasTitle = True
.ChartTitle.Text = "商品別売上金額"
.Axes(xlCategory).HasTitle = True
.Axes(xlCategory).AxisTitle.Text = "商品名"
.Axes(xlValue).HasTitle = True
.Axes(xlValue).AxisTitle.Text = "売上金額"
End With
End Sub
- 「Alt + F8」を押してマクロを実行

2 ピボットテーブルの自動作成
- VBAエディターを開き、以下のコードを貼り付け
Sub ピボットテーブル()
Dim wsData As Worksheet
Dim wsPivot As Worksheet
Dim pc As PivotCache
Dim pt As PivotTable
Set wsData = ThisWorkbook.Sheets("Sheet1")
Set wsPivot = ThisWorkbook.Sheets.Add
wsPivot.Name = "ピボットテーブル"
' ピボットキャッシュを作成
Set pc = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=wsData.Range("A1:D100"))
' ピボットテーブルの挿入
Set pt = pc.CreatePivotTable(TableDestination:=wsPivot.Range("A3"), TableName:="SalesPivot")
' フィールドの設定
With pt
.PivotFields("商品名").Orientation = xlRowField
.PivotFields("営業担当").Orientation = xlColumnField
.PivotFields("金額").Orientation = xlDataField
End With
End Sub
- マクロを実行

3 売上推移の折れ線グラフ作成
- VBAエディターを開き、以下のコードを貼り付け
Sub 折れ線グラフ()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' グラフオブジェクトの追加
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=400, Top:=400, Height:=300)
With chartObj.Chart
.SetSourceData Source:=ws.Range("A2:A" & lastRow & ",C2:C" & lastRow)
.ChartType = xlLine ' 折れ線グラフ
.HasTitle = True
.ChartTitle.Text = "売上推移"
.Axes(xlCategory).HasTitle = True
.Axes(xlCategory).AxisTitle.Text = "売上日"
.Axes(xlValue).HasTitle = True
.Axes(xlValue).AxisTitle.Text = "売上金額"
End With
End Sub
- マクロを実行

4 条件付き書式によるヒートマップ
- VBAエディターを開き、以下のコードを貼り付け
Sub ヒートマップ()
Dim ws As Worksheet
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
With ws.Range("C2:C" & lastRow)
.FormatConditions.AddColorScale ColorScaleType:=3
.FormatConditions(1).ColorScaleCriteria(1).Type = xlConditionValueLowestValue
.FormatConditions(1).ColorScaleCriteria(1).FormatColor.Color = RGB(255, 0, 0)
.FormatConditions(1).ColorScaleCriteria(2).Type = xlConditionValuePercentile
.FormatConditions(1).ColorScaleCriteria(2).Value = 50
.FormatConditions(1).ColorScaleCriteria(2).FormatColor.Color = RGB(255, 255, 0)
.FormatConditions(1).ColorScaleCriteria(3).Type = xlConditionValueHighestValue
.FormatConditions(1).ColorScaleCriteria(3).FormatColor.Color = RGB(0, 255, 0)
End With
End Sub
- マクロを実行

4. 出力結果
- グラフ作成: 商品別売上金額の棒グラフが表示される
- ピボットテーブル: 売上データの集計表が作成される
- 折れ線グラフ: 時系列の売上推移が可視化される
- ヒートマップ: 売上金額に応じたセルの色が変化
5. 注意事項
- データ範囲の確認: マクロ実行前にデータの最終行を正しく把握する。
- フィールド名の確認: 列名が正しく一致しているかチェック。
- マクロのセキュリティ: 信頼できる環境でのみ実行。
- バックアップの作成: 実行前にデータのバックアップを取る。
- グラフの位置調整: 作成されたグラフの位置やサイズを適宜調整。

コメント