从OLAP多维数据集数据透视表中过滤值

时间:2018-04-02 20:36:33

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

我有一个数据透视表,其中包含大量日期,我可以在过滤器中选择(超过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的新秀

任何人都可以帮助我。

感谢您的任何建议

1 个答案:

答案 0 :(得分:0)

您可以使用“标签”过滤器来完成此操作。问题是标签筛选器不可用于数据透视表的筛选器部分中的字段。所以你需要将第二个数据透视表除了其中的Dates字段作为行字段,然后使用切片器将该数据透视表连接到原始数据透视表,然后按照我在{}处勾勒出的方式在第二个数据透视表上以编程方式设置标签过滤器。 {3}}