VBA将OLAP多维数据集中的数据透视表过滤器更改为范围

时间:2015-06-18 15:06:59

标签: excel vba excel-vba pivot-table olap-cube

我有一个从OLAP多维数据集中提取数据的数据透视表,我想创建一个宏来根据另一个单元格中的值过滤包含“Year of Year”的数据透视表字段,以便我可以轻松改变表格的时间范围。

我对立方体集的体验非常有限,所以我使用宏录制器来查看发生了什么。我得到的示例代码是:

ActiveSheet.PivotTables("PivotTable3").PivotFields( _
        "[Time].[Week of Year].[Week of Year]").VisibleItemsList = Array( _
        "[Time].[Week of Year].&[1]", "[Time].[Week of Year].&[2]", _
        "[Time].[Week of Year].&[3]")

有没有办法简化这个,以便它将数组1的过滤器设置为n,n是另一个单元格的值?我的目标是能够通过在指定的领域输入15来显示第1周到第15周。

1 个答案:

答案 0 :(得分:3)

它应该是这样的:

Dim aWeeks()
Dim n                     As Long
Dim x                     As Long

n = Range("A1").Value

ReDim aWeeks(n - 1)
For x = 1 To n
    aWeeks(x - 1) = "[Time].[Week of Year].&[" & x & "]"
Next x
ActiveSheet.PivotTables("PivotTable3").PivotFields( _
        "[Time].[Week of Year].[Week of Year]").VisibleItemsList = aWeeks