VBA:根据数组过滤Power Pivot表中的行

时间:2017-01-18 17:38:45

标签: excel vba powerpivot

我有以下代码,我试图根据某些公司列表过滤我的数据透视表ROWS。我已经在数组peerGroup中加载了那些公司名称,我知道数组的长度。我的If语句正确识别了数组中哪些公司在数据透视表中找到但我无法弄清楚如何隐藏该值。

我已经查看了其他线程,我发现最常见的答案是使用.Visible,但是当我尝试将其用于我的代码时,我遇到了运行时错误。 "无法设置PivotItem类的可见属性"。

Dim ct As Integer
Dim i As Integer
Dim PG_RRC_PVT As PivotTable
Dim pi As PivotItem


Set PG_RRC_PVT = Worksheets("Pivot4Charts").PivotTables("PGRRCPVT")

PG_RRC_PVT.PivotFields("[CoTicker].[CompanyMask].[CompanyMask]").ClearAllFilters


For Each pi In PG_RRC_PVT.PivotFields("[CoTicker].[CompanyMask].[CompanyMask]").PivotItems
    For i = 0 To pgCount
         If pi.Name = "[CoTicker].[CompanyMask].&[" & peerGroup(i) & "]" Then
            pi.Visible = False
         End If
    Next i
Next pi

1 个答案:

答案 0 :(得分:0)

在我自己开车之后,事实上我有行的尺寸是为什么.Visible不起作用。要处理VisibleItemList中的语法..您只需调整数组...请参阅下面的代码

For i = 0 To pgCount - 1
    peerGroup(i) = "[CoTicker].[CompanyMask].&[" & peerGroup(i) & "]"
    MsgBox peerGroup(i)
Next
ActiveSheet.PivotTables("PGRRCPvt").PivotFields("[CoTicker].[CompanyMask].[CompanyMask]").VisibleItemsList = Array(peerGroup)