プロが教えるわが家の防犯対策術!

毎月以下のような表の作業をしますが、

 あ  い  う
1  A  B  100
2  C   D   100
3  D   E   200
4  W   R   200
5  T   G   500

この表で「う」の列の200を抽出し100と500は抽出しない
つまり以下の表になる

 あ  い  う
3  D   E   200
4  W   R   200

というマクロを使用したピボットテーブルを作成したいが、とりあえずマクロの自動記録でやると
以下のようになります。


With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("う")
.PivotItems("100").Visible = False
.PivotItems("500").Visible = False
End With

ここで問題なのはいつも「う」の列は100と200と500だけとは限らないことです。
時には600があり、また時には500がなかったりします。

そうすると100とか200とか500に何か変数をあてはめて実行すればいいでしょうか?
よろしくお願いします。

A 回答 (1件)

こんにちは。



もう少し良い方法がありそうな気がしますが、とりあえず
Sub test1()
  Dim chk As String
  Dim pvi As PivotItem
  
  Application.ScreenUpdating = False
  chk = "200"
  For Each pvi In ActiveSheet.PivotTables(1).PivotFields("う").PivotItems
    If Not pvi.Value Like chk Then pvi.Visible = False
  Next pvi
  Application.ScreenUpdating = True
End Sub
...な感じで。

これを戻す時(全て表示)は、For Each...Next内、無条件でpvi.Visible = Trueにすれば良いです。
PivotTableのデータ更新をしても良ければ、
Sub test2()
  With ActiveSheet.PivotTables(1).PivotFields("う")
    .Orientation = xlHidden
    .Parent.RefreshTable
    .Orientation = xlRowField
  End With
End Sub
これで再表示できます。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。明日すぐに会社でためしてみます。
ありがとうございました。

お礼日時:2007/05/29 21:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!