ピボットテーブルの行ラベルや列ラベルにフィールドがたくさん並んでいるときに、フィールドをまとめて削除したいと感じることがあります。
このサイトのアクセスログでも、
「vba ピボットテーブル 値フィールド 削除」
「Excel VBA ピボットテーブル フィールドを外す」
「vba ピボットテーブル フィールドクリア」
といった検索キーワードを見かけます。
そんなときに使えるExcelマクロをご紹介しておきます。
ピボットテーブルのフィールドを削除するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブシート上の1つ目のピボットテーブルの全フィールドが削除されます。
With ActiveSheet.PivotTables
If .Count = 0 Then Exit Sub
With .Item(1)
Dim fld As PivotField
For Each fld In .VisibleFields ' すべてのフィールドを削除
' For Each fld In .PageFields ' レポートフィルターのみ削除
' For Each fld In .RowFields ' 行ラベルのみ削除
' For Each fld In .ColumnFields ' 列ラベルのみ削除
' For Each fld In .PivotFields ' レポートフィルター・行ラベル・列ラベルを削除
' For Each fld In .DataFields ' 値のみ削除
fld.Orientation = xlHidden
Next
End With
End With
End Sub
サンプルマクロで行っている処理
PivotFieldオブジェクトに用意されているOrientationプロパティに、定数xlHiddenを設定するとフィールドが削除できます。
どのフィールドを削除するかは、PivotFieldsコレクションを取得する際のプロパティを変更するのが便利そうです。
VisibleFieldsで
ピボットテーブルで使われている全PivotField
PageFieldsで
レポートフィルターのPivotField
RowFieldsで
行ラベルのPivotField
ColumnFieldsで
列ラベルのPivotField
PivotFieldsで
レポートフィルター・行ラベル・列ラベルで使われているPivotField
DataFieldsで
値で使われているPivotField
を単独のオブジェクトとして含むPivotFieldsコレクションを、それぞれ取得できます。
上記のコードでコメントアウトしてある行を、順番に非コメント化してテストしてみると各。
最終更新日時:2020-03-27 10:19
Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » VBAでピボットテーブルのフィールドを削除する