首页 > 解决方案 > 如何一次隐藏多个pivotitem

问题描述

有没有办法在单个命令中隐藏 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

但这不是我的情况(不连续的值也不同)。即使通过滑块及其属性,您似乎也没有达到目标。

标签: excelvbaperformanceexcel-2010pivotitem

解决方案


隐藏所有 PivotItems 的最快方法是使感兴趣的 PivotField 成为页面字段,然后使用 .CurrentPage 属性立即过滤该项目。

如果您不希望页面字段区域中的数据透视表,则在看不见的地方设置一个“主”数据透视表,将主数据透视表中的感兴趣字段作为“主”数据透视表中的页面字段,并连接主数据透视表使用切片器到您的数据透视表(“从属”)。然后您可以简单地更改 Master 的 .CurrentPage 属性,然后它会立即通过 Slicer 过滤 Slave。

看看我在VBA 代码中的回答,以根据单元格中的值过滤数据透视表以及我在无法获取数据透视项类的可见属性时编写的函数


推荐阅读