VBA 将 OLAP 多维数据集中的数据透视过滤器更改为一个范围
VBA to change Pivot Filter in OLAP cube to a range
我有一个从 OLAP 多维数据集提取数据的数据透视表 table,我想创建一个宏来根据另一个单元格中的值过滤包含 'Week of Year' 的数据透视表字段, 这样我就可以轻松更改 table.
的时间范围
我对立方体集的经验非常有限,所以我使用宏记录器来查看发生了什么。我得到的示例代码是:
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 周。
应该是这样的:
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
我有一个从 OLAP 多维数据集提取数据的数据透视表 table,我想创建一个宏来根据另一个单元格中的值过滤包含 'Week of Year' 的数据透视表字段, 这样我就可以轻松更改 table.
的时间范围我对立方体集的经验非常有限,所以我使用宏记录器来查看发生了什么。我得到的示例代码是:
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 周。
应该是这样的:
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