我有一个excel OLAP数据透视表,上面有一个过滤器。过滤器是分层的,您可以向下和向下钻取几个级别以查看您想要查看的内容。
我正在尝试使用VBA过滤到特定级别,然后遍历所有级别的子项以执行其他操作。我的问题是弄清楚如何到达子项目列表。我可以过滤到我需要的水平但这就是事情变得棘手的地方。
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Accounts].[Business Bankers].[Cost Centre Code5]").VisibleItemsList = Array( _
"[Accounts].[Business Bankers].[Cost Centre Code5].&[" & AreaArr(i, 2) & "]")
For Each pi2 In ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Accounts].[Business Bankers].[Cost Centre Code6]").PivotItems
MsgBox pi2.Caption
MsgBox pi2.Value
MsgBox Right(pi2.Caption, Len(pi2.Caption) - 11)
Worksheets("Town").Copy ActiveSheet.Name = Right(pi2.Caption, Len(pi2.Caption) - 11)
Next
每个循环都不起作用。我试图找出如何遍历Cost Center Code5中存在的所有子项。
谢谢!
答案 0 :(得分:0)
在Excel 2010中,我发现仅选择一项时,Select Multiple Items
为0。因此不会执行任何循环。
即使您的过滤器已选中Select Multiple Items
,情况也是这样。换句话说,您需要选择PivotTables("x").PivotFields("y").PivotItems
和一个以上的项目,以便可以遍历集合。非常烦人。
您可以按照MS documentation按照以下PivotItem
的方式访问您选择的一个项目,但是我发现,如果我尝试将该方法分配给PivotItems
变量,则会得到一个类型不匹配。与文档相反,该方法每次都返回{{1}}类型。不幸的是,当只有一个选定的项目时,它的计数为零,因此您无法对其进行检查。