タイトルが示すように、他のフィルターが選択されている場合、反対のフィルターを無効にするか、デフォルトで「すべて」にしようとしています。
たとえば、「WEEK」と「MONTH」という 2 つのフィルターを持つピボット テーブルがあります。
誰かが週フィルターで値を選択した場合、月フィルターをデフォルトで「(all)」に設定し、その逆も同様です。
非常に単純ですが、これ (VBA または数式) とさらにコードを攻撃する方法がわかりません。
みんなありがとう!
タイトルが示すように、他のフィルターが選択されている場合、反対のフィルターを無効にするか、デフォルトで「すべて」にしようとしています。
たとえば、「WEEK」と「MONTH」という 2 つのフィルターを持つピボット テーブルがあります。
誰かが週フィルターで値を選択した場合、月フィルターをデフォルトで「(all)」に設定し、その逆も同様です。
非常に単純ですが、これ (VBA または数式) とさらにコードを攻撃する方法がわかりません。
みんなありがとう!
残念ながら、ピボット可能なフィールドの変更を追跡するイベントはありません。したがって、私の考えは次のとおりです。手順1.パブリック変数をどこかに配置します。
Public tmpM As Boolean
Public tmpW As Boolean
ステップ2.ピボットテーブルが配置されているシートモジュールに、次のコードを入力します。
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
On Error GoTo ErrorHandler
Application.EnableEvents = False
If Target.PivotFields("week").AllItemsVisible = False And tmpW = True Then
Target.PivotFields("month").ClearAllFilters
End If
If Target.PivotFields("month").AllItemsVisible = False And tmpM = True Then
Target.PivotFields("week").ClearAllFilters
End If
tmpM = Target.PivotFields("month").AllItemsVisible
tmpW = Target.PivotFields("week").AllItemsVisible
Application.EnableEvents = True
Exit Sub
ErrorHandler:
Application.EnableEvents = True
End Sub
私のサンプルデータでは問題なく動作します。
編集:上記のコードでのエラー処理。