【发布时间】: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 的菜鸟
谁能帮帮我。
感谢您的建议
【问题讨论】:
-
您可以使用标签过滤器来完成此操作。在stackoverflow.com/questions/49556897/…查看我的回答
标签: vba filtering pivot-table excel-2013 olap-cube