前提
Excel VBAにて、複数のピボットテーブルをつなぐスライサーを設定したいですが、うまく動作しません。
versionはOffice365です
実現したいこと
スライサーをクリックすると、複数のピボットテーブルが連動するようにしたいです。
そのためには、ピボットテーブルごとに「フィルターの接続」でスライサーを設定する必要がありますが、設定できません
(通常は、チェックボックスが出てくるかと思いますが、それがでてきません)
該当のソースコード
VBA
1 'ピボット①を作成する 2 ' ピボットキャッシュ作成 → ピボットテーブル作成 3 ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 4 "テーブル1", Version:=8).CreatePivotTable TableDestination:=Worksheets("Pivot").Range("C3"), _ 5 TableName:="ピボットテーブル1", DefaultVersion:=8 6 7 'ピボット②を作成する 8 ' ピボットキャッシュ作成 → ピボットテーブル作成 9 ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 10 "テーブル1", Version:=8).CreatePivotTable TableDestination:=Worksheets("Pivot").Range("F3"), _ 11 TableName:="ピボットテーブル2", DefaultVersion:=8 12 13 14 ' ピボット①を設定 15 With Worksheets("Pivot").PivotTables("ピボットテーブル1") 16 .PivotFields("商品名").Orientation = xlRowField 17 .PivotFields(Worksheets("AAA").Range(VisItemCol(0) & "4").Value).Orientation = xlDataField 18 .AllowMultipleFilters = True 19 End With 20 21' ' ピボット②を設定 22 With Worksheets("Pivot").PivotTables("ピボットテーブル2") 23 .PivotFields("商品名").Orientation = xlRowField 24 .PivotFields(Worksheets("AAA").Range(VisItemCol(1) & "4").Value).Orientation = xlDataField 25 .AllowMultipleFilters = True 26 End With 27
試したこと
上記プログラムを実行すると、二つのピボットテーブルができると思います。
片方のピボットテーブルにて、スライサーを作っても、連携できません(チェックボックスがでてこず、連携させることができません)
何か、オプションのようなものを書かないといけないのでしょうか。
どうぞよろしくお願いします。
「VisItemCol」とは何でしょうか?
PivotFieldsが格納されています。任意の文字列になります。
そこでエラーになるため質問のコードで「上記プログラムを実行すると、二つのピボットテーブルができると思います。」が確認できませんでした。
再現可能なコードを記載すべきでした。申し訳ありません。
このプログラムでやりたいことは、
・複数のピボットテーブルを作成し、複数のピボットグラフを作成
・複数のピボットテーブルを一括して制御できるスライサーを作成
・スライサーをクリックし、データを変更すると複数のピボットグラフが一斉に変化
ということがしたいです。
そのため、ピボットテーブルに必要なカラムは2つだけで、「主キー、グラフ化したいデータ」の二つになります。
主キーは"商品名"になります。グラフ化したいデータはVisItemColになります。
For i = 2 To 100
If Cells(2, i) = "可視化項目" Then
VisItemCol(j) = Split(Cells(2, i).Address(True, False), "$")(0)
j = j + 1
End If
Next i
上記のような感じで、可視化したいデータカラム名を取ってきて、VisItemColにいれています。
ここのコメントはインデント対応しないのですね。見にくくて申し訳ありません。
質問は編集可能ですよ。この欄はコメント欄のため質問に追記すると読まれやすくなります。
簡単なサンプルデータを提示できると回答者が検証しやすくなるかと思います。

回答1件
あなたの回答
tips
プレビュー