【问题标题】:Excel - Change PivotCharts based on columns using slicersExcel - 使用切片器根据列更改数据透视图
【发布时间】:2025-12-25 03:15:12
【问题描述】:

我有大量数据(200k+ 行和 10+ 列),以这种格式编译:

Month    Date        Time          Value1    Value2    Value3
Jan-18   1/1/2018    12:00:00 AM     10        20        30
Jan-18   1/1/2018    12:01:00 AM     13        23        33
etc...

我使用了带有切片器的数据透视表和数据透视图,以允许我的图表根据月份对数据进行排序。但是,我希望能够选择要显示的列,例如:允许我根据我的选择显示 Value1 或 Value2 的切片器。

对我有用的一种方法是以这种方式编译数据:

Month    Date        Time          Type    Value
Jan-18   1/1/2018    12:00:00 AM    1       10 
Jan-18   1/1/2018    12:01:00 AM    1       13  
Jan-18   1/1/2018    12:00:00 AM    2       20 
Jan-18   1/1/2018    12:01:00 AM    2       23  

这让我可以根据 type 使用切片器进行排序。这不是一个非常可行的选择,因为数据会不断添加,而且这样做很痛苦。

有没有更好的方法来做到这一点?我已经四处寻找,但找不到解决方案,不胜感激。

干杯!

【问题讨论】:

    标签: excel pivot-table pivot-chart


    【解决方案1】:

    是的,您可以使用我之前在Converting multiple variables into values with excel pivot tables or power pivot 发布的 VBA 来执行此操作。它要求您制作一个“收集器”数据透视表,其中仅包含您要换出的列,以便您可以创建一个切片器来触发代码。但我很确定这会让你做你想做的事。

    【讨论】:

    • 感谢您的回复!我已经完成了这些步骤,但我不太明白如何实现它。我对 VBA 很陌生。我按照您的代码制作了宏,但是当我尝试运行它时它没有显示在 excel 的宏菜单上
    • 第一个名为 sub 的子名为 Pivots_SwitchFields 进入标准代码模块。第二个子叫Workbook_SheetPivotTableUpdate进入ThisWorkbook 模块,不是标准代码模块。第二个 sub 是一个事件处理程序,它“监听”切片器的更改,然后自动运行第一个 sub。宏菜单中没有显示任何内容,因为您不需要手动运行 subs。
    • 我已经粘贴了相应的代码,但是在这行代码中收到了错误:“运行时错误'1004':对象'_Worksheet'的方法'数据透视表'失败”:Set pt = wks.PivotTables(Split(strInstructions, "|")(2))。我使用了与您相同的示例,使用 Sheet1(数据源)、Sheet2(来自源的数据透视表)、Sheet3(隐藏数据透视源)和 Sheet4(隐藏数据透视表,其中 SwitchFields|Sheet1|PivotTable1|Values 作为数据透视表名称)
    • 好的。你能再次运行代码,然后在即时窗口类型中运行吗? strInstructions 并按 Enter 并告诉我输出,然后对 ? wks.name 也是。如果您在 VBA 编辑器中看不到名为“即时窗口”的窗口,请从顶部的选项中选择“视图”>“即时窗口”。
    • ?strInstructions 给出了:SwitchFields|Sheet1|PivotTable1|Values,而 ?wks.name 给出了一个错误:对象差异或未设置块变量。我的 PivotTable1(来自源代码)中没有“值”,这可能是导致错误的原因吗?如果这是问题所在,您如何对数据透视表中的列进行分组,例如链接中的示例?