【问题标题】:Filtering values from OLAP Cube Pivot Table从 OLAP 多维数据集数据透视表中过滤值
【发布时间】:2018-09-12 02:13:36
【问题描述】:

我有一个包含很多日期的数据透视表,我可以在过滤器中选择(超过 1000 个不同的值)。 我需要的是过滤这些来自用户输入的日期值。 示例:开始日期是 01-03-2018 到结束日期 20-03-2018

我需要通过 VBA 代码来做到这一点。

我不确定 PT 中显示的日期值是否真的被声明为日期变量。 这些值来自多维数据集的时间维度。 这是一些屏幕截图。 Image 1 Image 2

我尝试使用 Wroksheet_Change,但是当我仅输入一个日期(例如 2018-03-20)并且 PT 正确更新时效果很好,但我不知道如何在一系列日期中执行此操作.这是我只用于一个日期的代码

    Private Sub Worksheet_Change(ByVal Target As Range)

Dim newDate As String
newDate = Worksheets("KPICuboSIGP").Range("M4").Value

If Target.Address = "$M$4" Then
    ActiveSheet.PivotTables("KPI-BPOP").PivotFields("[Time].[Date].[Date]"). _
        VisibleItemsList = Array("[Time].[Date].&[" & newDate & "T00:00:00]")
        End If
End Sub

我也打开了宏录制器,它就是这样录制的。

ActiveSheet.PivotTables("KPI-BPOP").PivotFields("[Time].[Date].[Date]"). _
        VisibleItemsList = Array("[Time].[Date].&[2018-01-21T00:00:00]", _
        "[Time].[Date].&[2018-01-22T00:00:00]", "[Time].[Date].&[2018-01-23T00:00:00]", _
        "[Time].[Date].&[2018-01-24T00:00:00]", "[Time].[Date].&[2018-01-25T00:00:00]", _
        "[Time].[Date].&[2018-01-26T00:00:00]")

一旦我从用户那里得到范围,就应该自动选择那些记录的日期。也许我需要使用 For 循环遍历过滤器中的选项,但我不知道该怎么做。 我几乎是 VBA 的菜鸟

谁能帮帮我。

感谢您的建议

【问题讨论】:

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


【解决方案1】:

您可以使用标签过滤器来完成此操作。问题是标签筛选器不适用于数据透视表的筛选器部分中的字段。因此,您需要创建第二个数据透视表,其中只有日期字段作为行字段,然后使用切片器将该数据透视表连接到原始数据透视表,然后以编程方式在第二个数据透视表上设置标签过滤器,正如我在 @ 概述的那样987654321@

【讨论】:

  • 我之前已经尝试过使用标签过滤器,但不知何故我无法使范围工作并且过滤也不起作用。我已经尝试了许多日期组合来过滤这些标签,但没有任何效果。日期格式似乎有点模棱两可,因为我不知道它是如何声明的。您可以在图 1 中看到日期显示“2018 年 1 月 21 日,星期日”,即使在过滤器中写入也根本不起作用。也许有人知道如何通过标签过滤器过滤这种日期,或者如何编写正确的格式来过滤。
猜你喜欢
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
相关资源
最近更新 更多