【问题标题】:How do I filter dates by a cell formula in an Excel pivot table?如何通过 Excel 数据透视表中的单元格公式过滤日期?
【发布时间】:2010-08-27 16:42:43
【问题描述】:

我正在尝试使用 Sql 服务器视图的数据透视表在 Excel 中制作一些报告。客户要求之一是能够根据他们选择的日期范围过滤报告,这似乎是合理的。最终用户流程需要相当简单,所以我的偏好是有一个单元格作为开始日期,一个单元格作为结束日期,并允许用户 输入这些并刷新表格。

有两个问题我没能解决:

  1. 选择日期过滤器似乎没有为我提供任何方法来引用单元格作为值的来源。我必须当时把它放进去。

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

我尝试过的一件事是在同一工作簿的单独工作表中创建一个没有任何聚合列的中间表,然后对其进行过滤。这正确地隐藏了该中间表中的列,但对从中派生的数据透视表没有影响。

是否有人对我如何使这项工作有想法?这似乎是一个相当明显的用例 - 关于应该如何使用数据透视表,我是否遗漏了什么?

【问题讨论】:

    标签: excel aggregate pivot-table date-range


    【解决方案1】:

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

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

    【讨论】:

    • 这行得通,但我们最终决定不使用它,因为使用 VBA 分发工作簿会导致向最终用户发出警告,这似乎不如训练他们自己进行日期过滤对用户友好.我认为这里的教训是,如果您想提供真正无缝的用户体验,您可能必须将功能放入您自己的应用程序中。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        相关资源
        最近更新 更多