【问题标题】:Remove all from Pivot filter in VBA从 VBA 中的 Pivot 过滤器中删除所有内容
【发布时间】:2017-08-08 17:44:26
【问题描述】:

我正在尝试删除数据透视表中“countryName”归档列表中的每个国家/地区。

但是我得到一个运行时错误 1004,我认为这是因为试图消除“全部”选择​​。我的代码如下:

With ActiveSheet.PivotTables("PivotTable1").PivotFields("countryName")
.ClearAllFilters
    .EnableMultiplePageItems = True
    .PivotItems("All").Visible = False
    .PivotItems("GREAT-BRITAIN").Visible = False
End With

其中“countyName”是字段 GREAT-BRITAIN 是我想要显示的唯一国家

我可以手动执行此操作,但每次导入新数据时,国家/地区列表可能会有所不同,因此我想删除“全部”,然后只留下“英国”

非常感谢任何可以提供帮助的人

【问题讨论】:

    标签: excel pivot-table vba


    【解决方案1】:

    首先,有几个 VBA 的替代品,以防您没有考虑过它们。您可以使用切片器来执行此操作,结果完全相同。或者,如果您希望用户从下拉列表中选择一个国家,您可以使用我在http://dailydoseofexcel.com/archives/2014/08/16/sync-pivots-from-dropdown/ 概述的方法

    我从代码中的 .EnableMultiplePageItems = True 行中得知您正在处理 PageField?如果是这样,您希望将 .EnableMultiplePageItems 设置为 false,并且只需更改 PageField 属性。

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("countryName")
        .ClearAllFilters
        .CurrentPage = "GREAT-BRITAIN"
    End With
    

    否则,您将不得不遍历数据透视表中的每个项目(英国除外)并将 .visible 状态设置为 false,这非常慢。 (请参阅我在以下链接中的帖子,因为它讨论了如何在使用 VBA 过滤 Pivots 时克服瓶颈: http://dailydoseofexcel.com/archives/2013/11/14/filtering-pivots-based-on-external-ranges/)

    如果您的字段不是 PageField,那么您仍然可以通过在看不见的某处设置“主”数据透视表来快速执行此操作,将主数据透视表中的感兴趣字段作为 PageField,将主数据透视表连接到数据透视表 1 ( 'Slave') 和 Slicer,并在隐藏的 Master 上使用上面的代码 sn-p 立即在一项上设置 PageField。 Slicer 然后立即将 Master 与 Slave 同步。我在 VBA to connect slicers (looking for improvements to code)

    【讨论】:

    • 感谢您的反馈。我花了很多时间编写数据透视表,所以如果您有任何其他要求,请大声疾呼。您打算使用代码还是切片器来执行此操作?如果编码,您或用户是否有可能选择“选择多个项目”复选框?因为那样会导致代码出错。
    • 啊,我从第二次阅读您的初始帖子中了解到您是这里的用户。
    • 请注意,如果您的数据透视表是按 GB 过滤的,那么无论何时添加新数据,它仍应按 GB 过滤,除非由于某种原因 GB 不在数据中。所以我不完全确定你为什么需要重新过滤数据。除非我错过了什么。这经常发生。 :-)
    • 嗨,我正在为不经常使用 excel 的人构建数据透视表的 VBA 代码。我在 excel 电子表格“姓名”中有一个销售人员列表 例如:John Chris Amber Catherine 在相同的代码中,我希望能够使用此列表,以便 VBA 在 xlRowField 内的数据透视表中自动过滤(PivotFields(“SalespersonName ")), (行字段 1).
    • 和以前一样,名称列表可以一直更改,所以我希望能够删除“全部”位并添加上面的名称。我尝试更改您在上面给出的代码,但这显然不适用于 xlPageField。如果你明白我的意思,你对我该如何继续有任何想法吗?非常感谢!
    猜你喜欢
    • 2018-01-29
    • 1970-01-01
    • 2016-12-09
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2016-01-19
    • 2018-06-13
    相关资源
    最近更新 更多