次の方法で共有


Excelのマクロで、ピポットフィルター条件でIF文を使用し作成する方法について

質問

2019年6月25日火曜日 14:24

Excelのマクロを最近勉強し始めた者です。

Excelのピポットテーブルを自動で作成するマクロを作っております。

作成する中で、フィルター条件の記述に困っており質問させて頂きます。

Excelの表においてある列(仮に金額)の値が0円〜未知数(実行する日によって違う)あるとします。

ピポットテーブルを自動で作成するマクロの条件として、金額列の値が999999以上の値をフィルタ条件で

外したい(False)にしたいと考えており、IF文をしようしマクロを記述したいと考えてえおります。

Excelの機能である、マクロの記録をおこなったのですが、、、以下の様な文になってしまい、

汎用性の無い構文となってしまいます。

毎回きんがくにはいる数値が違い、以下の様に文をかけない場合、IF文で [金額列]>999999 ならばFalseと

記載できればいいのですが、記載方法がわからず困っております。

どなたか、記載方法を教えていただけないでしょうか。

<マイクロの記録で記載したマクロ内容>

With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("金額")
       .Orientation = xlPageField
       .Position = 1
   End With
   ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("金額").CurrentPage = "(All)"
   With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("金額")
       .PivotItems("1000000").Visible = False

       .PivotItems("1000001").Visible = False

       .PivotItems("1000002").Visible = False

       .PivotItems("1000004").Visible = False

       .PivotItems("1000013").Visible = False

        .

        .   ※(長いので省略します)

        .

        .PivotItems("1000000000").Visible = False

   End With
End Sub

<使用環境>

・Windows10 Pro 64Bit Ver1903

・Office2016 Pro 64Bit

すべての返信 (2)

2019年6月26日水曜日 1:23

https://okwave.jp/qa/q7709136.html

For EachでPivotField.PivotItemsの各PivotItemを列挙して、.Valueの値を見て.VisibleをFalseにする、という手順ですかね。上記リンクではSelect Caseを使っていますが、数値の範囲ならIf文で十分です。


2019年6月26日水曜日 3:24

たぶん、マクロ記録する際、フィルタボタンをクリックした後にチェックボックスをはずしてフィルタしているのだと思いますが、チェックボックスを使うのではなく、「値フィルター」から「指定の値より大きい」を選択するように記録してみてください。

これで、下記のようなフィルタが記録されると思うので、適宜見直してください。

 ActiveSheet.PivotTables(***).PivotFields(***).PivotFilters.Add _
        Type:=xlValueIsGreaterThanOrEqualTo, _
        DataField:=ActiveSheet.PivotTables(***).PivotFields(***), _
        Value1:=***