我有一些如下数据:
物品 | 大量的 | CGx | 氯乙烯 | 钙镁磷 | 选项 |
---|---|---|---|---|---|
A123 | 10 | 4.2 | 0.1 | 0.5 | AB01 |
C789 | 24 | 2.2 | 0.0 | 0.2 | CD02 |
B456 | 12 | 3.8 | 0.0 | 0.7 | AB01 |
D123 | 二十六 | 1.2 | 1.0 | 0.2 | CD02 |
如果我想获得所有物品的总质量以及重心,我可以相当轻松地使用内置的 Excel 函数来实现。具体来说,如果这是一张表格,我可以使用:
总质量 = SUM(表 [质量])
总 CGx = SUMPRODUCT(表 [质量], 表 [CGx])/总质量
总 CGy = SUMPRODUCT(表 [质量], 表 [CGy]) / 总质量
总 CGz = SUMPRODUCT(表 [质量], 表 [CGz])/总质量
问题是我想将其汇总在基于“选项”的行数据透视表中,因此如下所示:
选项 | 大量的 | CGx | 氯乙烯 | 钙镁磷 |
---|---|---|---|---|
AB01 | 22 | 4.0 | 0.1 | 0.6 |
CD02 | 50 | 1.7 | 0.5 | 0.2 |
质量列很容易从数据透视表中获取总和,但我不知道如何应用自定义函数对选项列上的数据透视过滤返回的 CG 值执行 SUMPRODUCT()。
答案1
您可以简单地在数据透视表数据范围上使用 SUMPRODUCT。不幸的是,当数据透视表更新或您更改过滤器设置时,范围似乎无法正确更新。为了弥补这一点,您可以创建自己的动态范围随着数据透视表的变化,其大小会自动变化,如下所示:
=SUMPRODUCT($B$4:INDEX($B4:$B100,COUNTA($B4:$B100)-1),C$4:INDEX(C4:C100,COUNTA(C4:C100)-1))
或者,您可以使用 GETPIVOTDATA 从数据透视表中提取选定的数据,创建自己的子表以使用复杂的公式。在绝望的时候,我也会简单地将整个数据透视表数据复制到新工作表中(粘贴为值),创建可以正常操作的静态数据副本。