• ベストアンサー

ピボットテーブルのフィールドリスト内の検索

あまり詳しくないので、説明もわかり辛いと思いますが、宜しくお願いします。 今作成しているのですが、ピボットテーブルで商品名のリストがあり、この商品名が1000件あります。 その中の三つ商品だけピボットテーブルで集計をしたいのです 商品名の▼をクリックして、『すべて表示』のチェックマークを外すと1000件のチェックマークが外れるのですが、 チェックを入れたい三つの商品名を簡単に探す事ができず、順に目で追っています。 簡単に検索できで集計したい商品名にチェックマークを入れる事はできますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

マクロでやってみます。「マクロはNG」というなら無理におすすめしませんが、マクロ以外では難しいと思います。 まず以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。 次にマクロの2行目と3行目を目的の名前に変更してください。(仮に列名を「商品名」、表示する商品は「机」「椅子」「本棚」としている箇所です。商品は半角カンマ区切りです。何個あっても構いませんが、その商品名がピボットテーブルにないとエラーになります) マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 Sub Macro1() Const fldName As String = "商品名" '対象となるフィールド名を指定 Const tItems As String = "机,椅子,本棚" '表示したい商品を半角「,」で区切る Dim trg() As String Dim psw As Boolean Dim idx As Integer   trg = Split(tItems, ",")   If ActiveSheet.PivotTables.Count = 1 Then     On Error Goto Err0     Application.ScreenUpdating = False     With ActiveSheet.PivotTables(1).PivotFields(fldName)       For idx = 2 To .PivotItems.Count         .PivotItems(idx).Visible = False       Next idx       For idx = 0 To UBound(trg)         .PivotItems(trg(idx)).Visible = True         If .PivotItems(1).Name = trg(idx) Then           psw = True         End If       Next idx       If Not psw Then         .PivotItems(1).Visible = False       End If     End With   End If Err0:   Application.ScreenUpdating = True End Sub ただしこのマクロはワークシート上にピボットテーブルが1つしかないことを前提にしています。実際にはそうでないなら補足してください。

yumisan17
質問者

お礼

マクロしかないのですね・・・(涙) 絶対検索できるはずだと思い込んでいましたが、あきらめもでました。 ありがとうございました

関連するQ&A