我正在尝试编写代码,允许我从数据透视字段中过滤掉单个项目。我的数据透视表是根据数据模型而不是常规表构建的。我相信这会改变事情。我找到的在线解决方案都不起作用,我认为这就是原因。
目前我正在使用:
pf.VisibleItemsList = FilterArray
其中 pf 是数据透视字段的自定义变量,FilterArray 是一个自定义数组,其中包含我要过滤的值。
我不知道如何过滤掉一个特定值。我试过了
pi.Visible = False
其中 pi 是数据透视项的自定义变量,但它会抛出错误“无法设置 PivotItem 类的 Visible 属性”。我只将一项设置为 false。里面还有其他东西。
我在某处看到这可能是由于数据透视缓存造成的,我应该将“每个字段保留的项目数”设置为零。但是,选择该选项对我来说是灰色的。同样,我认为这是因为我使用数据模型作为数据透视表的来源。如果我查看从常规表创建的数据透视表,该选项不会灰显。
我希望有人能解决数据模型数据透视表的问题。谢谢。
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