如何使用 VBA 过滤数据透视字段(数据模型)

问题描述 投票:0回答:1

我正在尝试编写代码,允许我从数据透视字段中过滤掉单个项目。我的数据透视表是根据数据模型而不是常规表构建的。我相信这会改变事情。我找到的在线解决方案都不起作用,我认为这就是原因。

目前我正在使用:

pf.VisibleItemsList = FilterArray

其中 pf 是数据透视字段的自定义变量,FilterArray 是一个自定义数组,其中包含我要过滤的值。

我不知道如何过滤掉一个特定值。我试过了

pi.Visible = False

其中 pi 是数据透视项的自定义变量,但它会抛出错误“无法设置 PivotItem 类的 Visible 属性”。我只将一项设置为 false。里面还有其他东西。

我在某处看到这可能是由于数据透视缓存造成的,我应该将“每个字段保留的项目数”设置为零。但是,选择该选项对我来说是灰色的。同样,我认为这是因为我使用数据模型作为数据透视表的来源。如果我查看从常规表创建的数据透视表,该选项不会灰显。

我希望有人能解决数据模型数据透视表的问题。谢谢。

vba filter pivot datamodel
1个回答
0
投票
  • 基于数据模型的数据透视表的数据透视字段名称有所不同。
Sub FilterPT()
    Dim PT As PivotTable, pfRegion As PivotField, pfProduct As PivotField
    Set PT = ActiveSheet.PivotTables("PivotTable1")
    Set pfRegion = PT.PivotFields("[Table1].[Region].[Region]")
    pfRegion.ClearAllFilters
    PT.CubeFields(1).EnableMultiplePageItems = True
    pfRegion.VisibleItemsList = Array("[Table1].[Region].&[BB]", "[Table1].[Region].&[CC]")
    Set pfProduct = PT.PivotFields("[Table1].[Product].[Product]")
    pfProduct.VisibleItemsList = Array("[Table1].[Product].&[A]", "[Table1].[Product].&[B]")
End Sub

© www.soinside.com 2019 - 2024. All rights reserved.