【问题标题】:How to change the GETPIVOTDATA() dynamically如何动态更改 GETPIVOTDATA()
【发布时间】:2016-05-18 20:28:14
【问题描述】:

我有两个公式如下:

=GETPIVOTDATA("Sum of Values",'Input Data'!$A$4,"State",Q42,"Route",$S$1,"STAT_COMB",$G$37,"SHA",$G$35)
=GETPIVOTDATA("Sum of Values",'Input Data'!$A$4,"State",Q42,"Route",$S$1,"STAT_COMB",$G$37)

第二个公式的主要区别是,我没有考虑“SHA”参数。考虑与否取决于另一个单元格值。我可以编写一个 if 条件来相应地选择公式。但问题是我还有这样的情况:

=GETPIVOTDATA("Sum of Values",'Input Data'!$A$4,"Route",Q42,"STAT_COMB",$G$37)

在这里,我不考虑“状态”和“SHA”参数,这取决于是否考虑各自不同的单元格。

同样,公式中的每个 [Field],[Item] 对取决于各自不同的单元格是否包含它们。

如果条件写太多,会使公式变得繁琐。所以,我想知道是否有任何方法可以动态省略公式中的 [Field],[Item] 对。

我本可以在 getpivotdata() 中使用 INDIRECT,但 INDIRECT 只获取一个值,但我需要为每个参数设置一对值。

【问题讨论】:

  • 为字段和项目分配两列,并允许用户从下拉列表中选择所需的字段,例如 10 行数据。同样可以从 excel vba 循环,单个 If() 条件将检查空单元格,其余循环将重复相同的操作。
  • 为什么不尝试将条件放在另一个单元格(比较)中,然后对数据透视表的这些比较使用间接?或者使用 AND(condition1, condition2) 做更多的比较
  • @Pramod 你看过我的回答了吗?如果我的答案不起作用 - 我希望得到反馈,以便我们改进答案或继续前进。
  • @NicholasPatton 我已经看到你的答案了。你的答案很好,但不适用于我的场景,因为选择哪个,哪个不改变,我不能使用单独的单元格来识别它们。我的解决方案是只使用多个 IF 条件,因为这种情况很难解释。

标签: excel-formula excel-2007 pivot-table


【解决方案1】:

这是我能想到的最好的……但不一定漂亮……

这里的挑战是您不能(据我所知并且没有 VBA)动态更改您在单元格中使用的重载 GETPIVOTDATA 函数。所以我们需要选择1个函数。在这个例子中,这是我的函数:

=GETPIVOTDATA("Sum of hello",INDIRECT(K2),M1,O1,M2,O2,M3,O3,M4,O4)

我选择了一个指定 4 个 [field,item] 对的重载。

现在我像这样设置我的工作表...

你看——对于这个例子,我只想使用 2 个 [field,item] 对——所以我只是复制参数来填充重载函数中剩余的 2 对。 Excel 仍然可以正确计算 GETPIVOTDATA 函数,因为我确实只指定了 2 个唯一的 [field,item] 对。

这是否能让您朝着目标走得足够远?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2014-11-15
    • 2020-12-12
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多