- ベストアンサー
ピボットテーブルのフィールドリスト内の検索
あまり詳しくないので、説明もわかり辛いと思いますが、宜しくお願いします。 今作成しているのですが、ピボットテーブルで商品名のリストがあり、この商品名が1000件あります。 その中の三つ商品だけピボットテーブルで集計をしたいのです 商品名の▼をクリックして、『すべて表示』のチェックマークを外すと1000件のチェックマークが外れるのですが、 チェックを入れたい三つの商品名を簡単に探す事ができず、順に目で追っています。 簡単に検索できで集計したい商品名にチェックマークを入れる事はできますか?
- みんなの回答 (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つしかないことを前提にしています。実際にはそうでないなら補足してください。
お礼
マクロしかないのですね・・・(涙) 絶対検索できるはずだと思い込んでいましたが、あきらめもでました。 ありがとうございました