目次
概要
Excelでは、ピボットテーブルを使うことで、大量のデータを簡潔に集計・分析することができます。しかし、作成後にレイアウトを手動で変更するのは手間がかかることもあります。
本記事では、VBA(Visual Basic for Applications)を使ってピボットテーブルのレイアウトを自動的に変更する方法について解説いたします。行・列・ページ・値フィールドの配置をプログラムで制御できるため、テンプレートとしても便利です。
サンプルコード
Sub ChangePivotLayout()
With ActiveSheet.PivotTables(1)
.ClearTable ' レイアウト初期化
.PivotFields("営業担当").Orientation = xlPageField
.PivotFields("取引先名").Orientation = xlRowField
.PivotFields("商品カテゴリ").Orientation = xlColumnField
.PivotFields("販売額").Orientation = xlDataField
End With
End Sub
コード解説
.ClearTable
ピボットテーブルのフィールド配置をすべてリセットし、空の状態にします。必要に応じてこの行を省略することも可能です。.PivotFields("営業担当").Orientation = xlPageField
フィールド「営業担当」をページフィールドに設定します。ページフィールドにすることで、ユーザーが任意の値でフィルタリングしやすくなります。.PivotFields("取引先名").Orientation = xlRowField
「取引先名」フィールドを行ラベルとして配置します。.PivotFields("商品カテゴリ").Orientation = xlColumnField
「商品カテゴリ」フィールドを列ラベルとして配置します。.PivotFields("販売額").Orientation = xlDataField
「販売額」フィールドを集計値として設定します。自動的に「合計」などの関数が適用されます。
※なお、プロパティ名のスペルミスに注意が必要です。正しくは下記のとおりです:
Orientation
ColumnField
→xlColumnField
RowField
→xlRowField
誤記があるとエラーが発生するため、コード作成時は正確に記述してください。
応用例
このコードは、下記のような場面でも応用できます。
- レポートを複数作成する業務の自動化
- 月次データに応じてレイアウト変更が必要な帳票作成
- 複数部門の分析レイアウトを一括変更するマクロの作成
また、.AddDataField
メソッドを使用すれば、複数の数値フィールドを一括で追加・集計形式を変更することも可能です。
まとめ
本記事では、Excel VBAを使ってピボットテーブルのレイアウトを自在に変更する方法をご紹介いたしました。フィールドの配置を自動化することで、作業の効率化やレポートの標準化に大きく貢献します。
ピボットテーブルをより便利に活用するためにも、ぜひこのVBA手法をご活用ください。