ここでは 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 で自動化できます。

