如何通过VBA过滤一项的切片器?

时间:2019-01-14 01:54:12

标签: excel vba excel-2010

我的切片器包含100多个城市,我想一次通过一个城市中的VBA过滤切片器(以便将图表的区域打印到Powerpoint中)。麻烦在于,我认为我将不得不列出所有其他城市并将其显示为“ Selected = False”。我需要一个代码块,其中我仅指定我所在的城市,默认情况下,其他切片器选项为“ Selected = False”。

我已经在下面记录了宏代码,并且已经在网上搜索了解决此问题的方法,但是空手而归。

 With ActiveWorkbook.SlicerCaches("Slicer_City")
        .SlicerItems("New York").Selected = True
        .SlicerItems("Chicago").Selected = False
        .SlicerItems("Trenton").Selected = False
        .SlicerItems("Atlanta").Selected = False
        .SlicerItems("Houston").Selected = False
        .SlicerItems("Los Angeles").Selected = False
'  there are 100 more cities to list if I just wanted "New York" to be selected 
       'in the slicer
End With

我需要只在其中指定选择项(纽约)而不将其他每个城市都声明为“ Selected = False”的代码。

1 个答案:

答案 0 :(得分:1)

最快的方法是将感兴趣的枢轴字段设置为pagefield,然后遍历所有项,并将PivotField的.CurrentPage属性依次设置为每个,因为这会自动将其他项变为FALSE。如果您不希望在“页面字段”区域中使用“数据透视表字段”,则仍然可以通过在视线外的某个地方设置“主”数据透视表,将感兴趣的字段作为“页面字段”,连接到“主数据透视表”,来快速完成此操作到带有切片器的PivotTable1(“从属”),然后更改母版的.CurrentPage属性,该属性将立即通过切片器过滤.Slave。

VBA code to filter a pivot table based on the value in a Cell上查看我的答案,其中包含针对此类问题的一些效率提示,以及指向包含代码的其他答案的链接。