【问题标题】:Is it possible to filter data used by pivot table based on filtering the rows in a source table in Excel?是否可以根据在 Excel 中过滤源表中的行来过滤数据透视表使用的数据?
【发布时间】:2012-12-14 17:01:21
【问题描述】:

我在 Excel 2007 中开发了一个仪表板,它使用工作表中的一个源表(在我们的数据仓库中填充了一个查询)和多个数据透视表,该表在此数据上形成不同的横截面。

我在近一百个公式中使用 GETPIVOTDATA 来为我的仪表板中的特定指标提供正确的值。

这一切都很好。但是,我现在收到了为 5 个不同部分制作仪表板的问题。正如您可以想象的那样,我不想为此创建 5 个不同的工作簿,并且需要在所有这些工作簿上维护仪表板逻辑。

所以我的问题如下。是否可以自动(通过 VBA 或任何其他方式)过滤我的源表中的结果,该表是我的数据透视表的源,因此也是我的仪表板值的源。

如此示意:

DATABASE_VIEW --> SOURCE_TABLE --> 12 个数据透视表 --> 100 个 GETPIVOTDATA 函数

最好我想加载 source_table 中的所有段(我的数据库上的一个视图),然后过滤源表中的数据,从而为我的数据透视表过滤 source_dat。通过这种方式,我可以(无需重新查询数据库)在仪表板中的段之间快速更改(仅刷新数据透视表)。

源表中的数据具有可用于过滤的列:CUSTOMER_SEGMENT。

感谢任何帮助。

杰弗里

【问题讨论】:

  • 您可以根据需要使用现有列来过滤源数据,或者如果该列不存在,您可以创建它并将其附加到源数据的末尾,然后更改您的透视源以包含该列。
  • 有时重新查询数据库可能比 Excel 中的 vlookup 和 getpivotdata 函数的多个步骤更快。但是,如果您想坚持当前的结构,您也可以将 excel 中的(1 次查询)database_view 视为外部数据源本身。这样您就可以再次查询它(通过 VBA 或参数链接更改查询过滤器)
  • 谢谢大家......真的很有帮助......经过深思熟虑......我想我会在我的 SQL 中动态设置我的 WHERE 子句

标签: excel pivot-table vba


【解决方案1】:

您可以通过 VBA 操作所有外部数据连接和内部数据透视表。

为了使它成为您的双重学习者,我建议使用“记录宏”按钮,然后更改数据透视表中的过滤器,并稍微更改您的 SQL 查询。

您现在将看到在录制的宏中说明了该数据透视表/查询的相关属性。过滤器和 SQL 只是 VBA 代码中的字符串,因此您可以更改某些位以获得不同的过滤器或 "WHERE Cust_ID = " comboboxCust.Value 之类的东西。

通过 VBA 代码来更改过滤器和 SQL 通常比使用标准 Excel 工具(函数、参数、链接过滤器等)交互相关的速度更快

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2012-06-19
    • 1970-01-01
    • 2021-10-08
    • 2018-04-22
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多