条件数据透视表过滤(如果选择一个禁用另一个)

时间:2013-03-21 13:38:46

标签: excel excel-vba excel-formula vba

就像标题所说的那样,如果选择了另一个,我试图禁用或将对立过滤器默认为“全部”。

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

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

非常简单,但我不确定如何攻击这个(VBA或公式)以及代码。

谢谢你们!

1 个答案:

答案 0 :(得分: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

它适用于我的示例数据。

上面代码中的

编辑:错误处理。