1

タイトルが示すように、他のフィルターが選択されている場合、反対のフィルターを無効にするか、デフォルトで「すべて」にしようとしています。

たとえば、「WEEK」と「MONTH」という 2 つのフィルターを持つピボット テーブルがあります。

誰かが週フィルターで値を選択した場合、月フィルターをデフォルトで「(all)」に設定し、その逆も同様です。

非常に単純ですが、これ (VBA または数式) とさらにコードを攻撃する方法がわかりません。

みんなありがとう!

4

1 に答える 1

0

残念ながら、ピボット可能なフィールドの変更を追跡するイベントはありません。したがって、私の考えは次のとおりです。手順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

私のサンプルデータでは問題なく動作します。

編集:上記のコードでのエラー処理。

于 2013-03-21T14:40:00.393 に答える