Excel VBA | データ分析(Offset × 条件分岐 × Pivot)の黄金パターン集

VBA
スポンサーリンク

ここでは Offset × 条件分岐 × Pivot を組み合わせて「表データをピボットテーブル風に分析・集計する」黄金パターンをまとめます。
VBA で PivotTables を操作することで、カテゴリ別・月別・部署別などのクロス集計を自動化できます。


基本パターン 10選

1. 商品カテゴリ別売上集計

Dim pc As PivotCache, pt As PivotTable
Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Range("A1:D100"))
Set pt = pc.CreatePivotTable(TableDestination:=Range("F2"), TableName:="Pivot1")

With pt
    .PivotFields("カテゴリ").Orientation = xlRowField
    .PivotFields("売上").Orientation = xlDataField
    .PivotFields("売上").Function = xlSum
End With
VB

👉 商品カテゴリごとの売上合計を集計。


2. 部署別勤務時間集計

With pt
    .PivotFields("部署").Orientation = xlRowField
    .PivotFields("勤務時間").Orientation = xlDataField
    .PivotFields("勤務時間").Function = xlSum
End With
VB

👉 部署ごとの勤務時間を集計。


3. 月別売上集計

With pt
    .PivotFields("日付").Orientation = xlColumnField
    .PivotFields("売上").Orientation = xlDataField
    .PivotFields("売上").Function = xlSum
End With
VB

👉 日付から月別に売上を集計。


4. 顧客別購入回数集計

With pt
    .PivotFields("顧客名").Orientation = xlRowField
    .PivotFields("購入ID").Orientation = xlDataField
    .PivotFields("購入ID").Function = xlCount
End With
VB

👉 顧客ごとの購入回数を集計。


5. 商品別在庫平均

With pt
    .PivotFields("商品名").Orientation = xlRowField
    .PivotFields("在庫数").Orientation = xlDataField
    .PivotFields("在庫数").Function = xlAverage
End With
VB

👉 商品ごとの在庫平均を集計。


6. 部署別・月別クロス集計

With pt
    .PivotFields("部署").Orientation = xlRowField
    .PivotFields("月").Orientation = xlColumnField
    .PivotFields("勤務時間").Orientation = xlDataField
    .PivotFields("勤務時間").Function = xlSum
End With
VB

👉 部署 × 月別の勤務時間クロス集計。


7. 条件付き集計(VIP顧客のみ)

With pt
    .PivotFields("顧客区分").Orientation = xlPageField
    .PivotFields("顧客区分").CurrentPage = "VIP"
    .PivotFields("売上").Orientation = xlDataField
    .PivotFields("売上").Function = xlSum
End With
VB

👉 VIP顧客のみ売上を集計。


8. 商品カテゴリ別最大売上

With pt
    .PivotFields("カテゴリ").Orientation = xlRowField
    .PivotFields("売上").Orientation = xlDataField
    .PivotFields("売上").Function = xlMax
End With
VB

👉 商品カテゴリごとの最大売上を集計。


9. 商品カテゴリ別最小売上

With pt
    .PivotFields("カテゴリ").Orientation = xlRowField
    .PivotFields("売上").Orientation = xlDataField
    .PivotFields("売上").Function = xlMin
End With
VB

👉 商品カテゴリごとの最小売上を集計。


10. 複数データフィールド集計

With pt
    .PivotFields("カテゴリ").Orientation = xlRowField
    .PivotFields("売上").Orientation = xlDataField
    .PivotFields("売上").Function = xlSum
    .PivotFields("売上").Function = xlAverage
End With
VB

👉 同じフィールドで「合計」と「平均」を同時に集計。


✅ まとめ

  • Offset → 出力位置を自在に制御(右側や下段に Pivot を配置)
  • 条件分岐 → VIP顧客のみ、特定部署のみなどフィルタリング
  • Pivot → クロス集計・小計・平均・最大/最小など多様な分析を自動化
  • 黄金パターン → 商品別・部署別・月別・顧客別の分析を一瞬で展開

💡 この「データ分析 × Offset × 条件分岐 × Pivot」パターン集を使えば、売上表・勤怠表・在庫表などの ピボットテーブル風分析 を VBA で自動化できます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました