更改数据透视表中的日期范围

时间:2013-11-18 20:29:32

标签: excel vba excel-vba excel-2010 pivot-table

如何在数据透视表的报告过滤中自动检查/取消选中日期?

我有一个数据透视表,我需要根据日期范围(过去七天,前七天)提取数据。电子表格有多个数据透视表,点击每个复选框(每年,每季度,每月,每天,取消选中前几天,在下拉菜单中调整大小和滚动)的过程令人抓狂。

Pivot Table Checkboxes

我想要一个包含日期的字段,然后运行一个宏,根据该日期修改所选日期。例如在单元格A1中输入“11/11”,并且仅检查11月4日至10日期日期范围的复选框以及其他人检查10月28日至11月3日的日期范围。然后下周,我可以用新的日期更新A1并从那里开始。

我已经能够编写一个设置日期复选框的宏,但是如果不手动输入当月的实际日期,我就无法更新它。下面是操作日期复选框的代码块。但是,我怎样才能使整个过程自动化?理想情况下,任何解决方案都会考虑到几个星期跨越两个月。

ActiveSheet.PivotTables(ptNameA20).TableRange1.Select
ActiveSheet.PivotTables(ptNameA20).PivotFields( _
    "[Date].[Date Hierarchy].[Year]").VisibleItemsList = Array("")
ActiveSheet.PivotTables(ptNameA20).PivotFields( _
    "[Date].[Date Hierarchy].[Quarter]").VisibleItemsList = Array("")
ActiveSheet.PivotTables(ptNameA20).PivotFields( _
    "[Date].[Date Hierarchy].[Month]").VisibleItemsList = Array("")
ActiveSheet.PivotTables(ptNameA20).PivotFields( _
    "[Date].[Date Hierarchy].[Day]").VisibleItemsList = Array( _
    "[Date].[Date Hierarchy].[Day].&[2013-11-04T00:00:00]", _
    "[Date].[Date Hierarchy].[Day].&[2013-11-05T00:00:00]", _
    "[Date].[Date Hierarchy].[Day].&[2013-11-06T00:00:00]", _
    "[Date].[Date Hierarchy].[Day].&[2013-11-07T00:00:00]", _
    "[Date].[Date Hierarchy].[Day].&[2013-11-08T00:00:00]", _
    "[Date].[Date Hierarchy].[Day].&[2013-11-09T00:00:00]", _
    "[Date].[Date Hierarchy].[Day].&[2013-11-10T00:00:00]")`

我尝试使用循环生成字符串,例如“2013-11-04”,“2013-11-05”等...然后构建一个长字符串(包含'day'行)。但是,我无法使用结果,除非将它们粘贴到宏中(粘贴前一周的文本块)。这会导致大量复制和粘贴,同时担心覆盖错误的数据透视表。这比手动检查和取消选中框更好但仍然不好。

我正在使用Excel 2010.N.B.我在SuperUser中问了这个,但没有收到任何回复。

1 个答案:

答案 0 :(得分:0)

虽然我无法深入了解这个问题的VBA解决方案,但我确实找到了一个应该快速使用的替代方案(并且更快地实现)。

<强>切片器

通过添加两个切片器(过去两周各一个),我可以通过单击拖动选择日期范围。一张添加到工作表中,它们可以连接到多个数据透视表,甚至可以分布在多个工作表上。它们也可以采用颜色格式,以匹配它们连接的数据透视表。

注意:如果有人对VBA解决方案有任何建议,我仍然希望看到它们。

来自Microsoft的网站:Use slicers to filter PivotTable data