2010-08-27 71 views
1

我正在尝试使用Sql server视图的数据透视表在Excel中创建一些报告。客户的一项要求是能够根据他们选择的日期范围来筛选报告,这看起来很合理。最终用户进程需要相当简单,所以我的首选是为开始日期和结束日期设置一个单元格,并允许用户输入这些并刷新表格。如何通过Excel数据透视表中的单元格公式过滤日期?

有,我一直没能闯过两个问题:

  1. 选择日期过滤器似乎并未提供任何办法,我引用单元格作为一个价值来源。我当时必须把它放进去。

  2. 似乎只有在日期字段上分组时才能定义日期范围。对于某些报告,这违反了规范。数据透视表的“报表过滤器”部分似乎只允许我按单个值进行过滤,而不是范围。对于可能有数百个日期需要处理的真实数据,这会变得难以管理。

一件事我曾尝试是无需用单独的片材在同一工作簿的任何聚集体列以创建一个中间表,然后筛选。这将列正确隐藏在该中间表中,但对从其派生的数据透视表没有影响。

有没有人有如何做这项工作的想法?这似乎是一个相当明显的用例 - 我是否缺少关于如何使用数据透视表的问题?

回答

1

您可以做的简单事情是即时更改数据透视表查询。

当源单元格更改(Worksheet_Changed事件)时,请附加" AND WhateverDate > '1/1/1111'"Me.PivotTables("Your pivot").PivotCache.CommandText并刷新数据透视表。

+0

这是有效的,但我们最终决定不去使用它,因为使用VBA分发工作簿会导致警告给最终用户,这似乎比培训他们自己做日期过滤更不方便用户使用。 我想这里的教训是,如果您想提供真正无缝的用户体验,您可能必须将功能置于您自己的应用程序中。 – GlennS 2010-09-02 14:48:06

0

我记得几年前,我通过将SQL查询设置为动态(即将它作为字符串放在VBA中,并在where条件中使用带有范围值的单元格)来解决了类似的需求。然后用标有“刷新”的按钮调用VBA macor。

但是我很抱歉没有这个代码可用,我只记得一般的想法。

0

这已经死了一段时间,但我想我会发布一种不同的方法。将一个公式添加到源表中,该公式为您想要的东西返回'1',为您不需要的东西返回'0',然后在仅过滤'1'的数据透视表中添加一个过滤器。

相关问题