1

正如标题所说,如果选择了另一个,我正在尝试禁用或将相反的过滤器默认为“全部”。

例如,我有一个带有两个过滤器的数据透视表 - “WEEK”和“MONTH”

如果有人在周过滤器中选择一个值,我希望月过滤器默认为“(全部)”,反之亦然。

很简单,但我不确定如何攻击这个(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 回答