「vba ピボットテーブル 小計なし」
「vba ピボットフィールドの小計 非表示」
「excel vba ピボットテーブル 小計 非表示 マクロ」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
[ピボットテーブル ツール]-[デザイン]タブ-[小計]-[小計を表示しない]を選択すると、
ピボットテーブルの小計を非表示にできます。
これをVBA(Visual Basic for Applications)から行うには、どのようなコードを書けばいいのかを探していた方による検索キーワードでしょう。
小計を表示しない操作をマクロ記録すると
上記の[小計を表示しない]を実行する操作をマクロ記録すると、以下のようなコードができます。
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("ID").Subtotals = Array(False, _
False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("日付").Subtotals = Array(False, _
False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("商品種別").Subtotals = Array(False, _
False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("商品名").Subtotals = Array(False _
, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価").Subtotals = Array(False, _
False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("個数").Subtotals = Array(False, _
False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("売上額").Subtotals = Array(False, _
False, False, False, False, False, False, False, False, False, False, False)
End Sub
Excelのマクロ記録機能では、条件分岐文やループ文が作られないという、見本のようなマクロです。
ピボットテーブルの元データの、すべてのフィールドのSubtotalsプロパティを、地道にFalseにしているコードです。
小計を非表示にするサンプルマクロ
For Each~Nextループを使った以下のようなマクロにすれば、アクティブなワークシート上の1個目のピボットテーブルの、小計が非表示になります。
Dim pv_fld As PivotField For Each pv_fld In ActiveSheet.PivotTables(1).PivotFields
pv_fld.Subtotals(1) = True
pv_fld.Subtotals(1) = False
Next pv_fld
End Sub
PivotFieldオブジェクトのSubtotalsプロパティには、12個の要素を持った配列を指定できます。
そのためマクロ記録でできたコードでは、代入文の右辺が、
「Array(False, False, False, False, False, False, False, False, False, False, False, False)」
と、Array関数の引数にFalseを12個指定した状態になっていました。
インデックスが True の場合、フィールドにその集計が表示されます。インデックス 1 (自動) が True である場合、その他のすべての値に False が設定されます。
とのことなので、全PivotFieldオブジェクトに対するFor Each~Nextループ内で、
For Each pv_fld In ActiveSheet.PivotTables(1).PivotFields
インデックス「1」の要素を一旦Trueにして他の11個をFalseにして、
pv_fld.Subtotals(1) = True
その後Falseにすることで、
pv_fld.Subtotals(1) = False
12個の要素すべてをFalseに、つまり小計を非表示にしています。
- Newer:データがない場合のCurrentRegionは
- Older:図形・オートシェイプの枠線を非表示にするExcelマクロ
Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » VBAでピボットテーブルの小計を表示しないように