9.6 数据透视表函数与其他函数联合使用

提取数据透视表数据时,GETPIVOTDATA函数的参数除了使用常量和单元格引用以外,还允许引用其他函数计算的结果。数据透视表函数与其他函数联合使用,可以产生更为神奇的效果。

示例9.3 在数据透视表函数中运用内存数组

图9-18所示是某公司各个分公司2012年2月份部分销售数据所创建的数据透视表,如果用户希望了解销售量最大或最小的分公司的情况,而且结果不受数据透视表数据变动的影响,那么就需要运用到GETPIVOTDATA函数参数支持内存数组的特性。

img209a

图9-18 根据销售数据创建的数据透视表

为了让公式简洁,先定义名称“Corp”,其公式如下:

=IFERROR(GETPIVOTDATA(T(透视表!$E$1),透视表!$A$1,“分公司”,透视表!$A$1:$A$99),"")

公式中GETPIVOTDATA函数的第4个参数“透视表!$A$1:$A$99”使用了区域引用,这样公式可以生成一个内存数组,再使用IFERROR函数去除错误值后,可以得到内存数组:

img209b

用户可以使用名称“Corp”进行需要的查询与统计:

1.计算销售量最大的分公司,计算结果为“浙江分公司”

=LOOKUP(2,1/(MAX(Corp)=Corp),$A$1:$A$33)

2.计算销售量最小的分公司,计算结果为“海南分公司”

=LOOKUP(2,1/(MIN(Corp)=Corp),$A$1:$A$33)

3.计算销售量最大的分公司C产品的销售金额,计算结果为78 500

=GETPIVOTDATA(T(D1),A1,$B$1,"C产品",$A$1,LOOKUP(2,1/(MAX(Corp)=Corp),$A$1:$A$33))

计算结果如图9-19所示。

注意img01

虽然本技巧能够根据明细数据实时更新而动态变化,但只有在数据透视表的布局结构保持不变时,透视表函数公式才能正确地返回结果,否则将出现错误。

img210

图9-19 与其他函数联合使用的结果