プロが教える店舗&オフィスのセキュリティ対策術

あまり詳しくないので、説明もわかり辛いと思いますが、宜しくお願いします。

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

A 回答 (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つしかないことを前提にしています。実際にはそうでないなら補足してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/22 12:42

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