有条件的数据透视表过滤(如果select了一个禁用另一个)

正如标题所说,我试图禁用或反对filter默认为“全部”,如果另一个被选中。

例如,我有一个数据透视表和两个filter – “WEEK”和“MONTH”

如果有人在周filter中select一个值,我想月filter默认为“(全部)”,反之亦然。

很简单,但我不知道如何攻击这个(VBA或公式),还有代码。

多谢你们!

不幸的是,没有事件会跟踪可转换的字段变化。 所以我的想法如下。 第1步:放置某处公用variables:

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 

它与我的示例数据正常工作。

编辑:在上面的代码中的error handling。