Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » VBAでピボットテーブルのフィールドを削除する

VBAでピボットテーブルのフィールドを削除する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2002 ビルド12527.20278 Microsoft Store)

ピボットテーブルの行ラベルや列ラベルにフィールドがたくさん並んでいるときに、フィールドをまとめて削除したいと感じることがあります。

このサイトのアクセスログでも、
「vba ピボットテーブル 値フィールド 削除」
「Excel VBA ピボットテーブル フィールドを外す」
「vba ピボットテーブル フィールドクリア」
といった検索キーワードを見かけます。

そんなときに使えるExcelマクロをご紹介しておきます。

[スポンサードリンク]

ピボットテーブルのフィールドを削除するサンプルマクロ

以下のSubプロシージャを実行すると、アクティブシート上の1つ目のピボットテーブルの全フィールドが削除されます。

Sub ピボットテーブルのフィールドを削除する()
 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でピボットテーブルのフィールドを削除する

「ピボットテーブル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.