如何动态更改GETPIVOTDATA()

时间:2016-05-18 20:28:15

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

我有两个如下公式:

=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只获取一个值,但我需要为每个参数提供一对值。

1 个答案:

答案 0 :(得分:1)

这是我能想到的最好的......但它不一定很漂亮......

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

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

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

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

enter image description here

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

这会让你达到目标吗?