有没有办法在单个命令中隐藏一系列PivotItems?
我正在使用Excel2010和标准数据透视表,而不是OLAP数据源。
我正在寻找一种显着加快代码执行速度的方法。我已经暂停重新计算,刷新视频,设置.ManualUpdate = True,...
我正在寻找类似pivotfield_list.hide
(或pivotfield_list.visible = False
),甚至更好的Hide_list (pivotfield ("xx"), pivotfield_list)
。
让我解释得更好。如果通过用户界面在枢轴字段中仅选择了几个条目,则可以快速获得结果。相反,如果在宏记录器打开的情况下执行此操作,则会使用n条命令将其翻译为:
With ActiveSheet.PivotTables ("pDoc"). PivotFields ("pir_L4")
.PivotItems ("1208 Costs"). Visible = False
.PivotItems ("1221 - series"). Visible = False
.PivotItems ("1231 - ILS"). Visible = False
....等等
如果您随后重新运行宏,则时间会更长(在我的表中,有很多可能的值需要取反)。
由于我可以通过GUI进行大量操作,因此我无法从VBA复制它似乎很奇怪。我一直在互联网上寻找很多解决方案,但是没有成功,有什么建议吗?
PS。我发现在枢轴项目的值连续的情况下,也可以执行以下命令:
range.delete
但这不是我的情况(不同的值也不是连续的)。似乎即使通过滑块及其属性也无法达到目标。
答案 0 :(得分:0)
隐藏所有PivotItems的最快方法是将感兴趣的PivotField设置为Page Field,然后使用.CurrentPage属性立即过滤该项目。
如果您不希望在“页面字段”区域中使用数据透视表字段,请在视线外的某个地方设置“主”数据透视表,将母版中感兴趣的字段作为“主”透视图中的PageField,然后进行连接使用切片器将主数据透视表更改为数据透视表(“从属”)。然后,您可以简单地更改Master的.CurrentPage属性,该属性随后将通过切片器立即过滤Slave。
看看我在VBA code to filter a pivot table based on the value in a Cell的答案以及我在unable to get the visible property of the pivotitem class编写的函数