【问题标题】:VBA to change Pivot Filter in OLAP cube to a rangeVBA 将 OLAP 多维数据集中的枢轴过滤器更改为范围
【发布时间】:2015-09-04 07:33:37
【问题描述】:

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

我对多维数据集集的经验非常有限,所以我使用宏记录器来查看发生了什么。我得到的示例代码是:

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 周。

【问题讨论】:

    标签: vba excel pivot-table olap-cube


    【解决方案1】:

    应该是这样的:

    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
    

    【讨论】:

    • 这很完美,非常感谢!你能告诉我逻辑,让我知道以供将来参考吗?
    • 它声明了一个大小从 0 到 n-1 的数组,然后每次循环调整字符串中的星期数。然后将该数组传递给VisibleItemsList 属性。如果您使用 f8 单步执行代码并且 Locals 窗口可见,您可以看到数组是如何填充的。
    猜你喜欢
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2020-02-02
    • 2018-09-12
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    相关资源
    最近更新 更多