Pivot计算公式:SUM(Field1)/ AVG(Field2)

时间:2012-09-13 08:21:51

标签: excel pivot-table calculated-columns

我有一个简单的表,其中包含一些数量和间隔,以秒为单位和产品名称。

Month | Product | Amount | Interval in sec
------------------------------------------
05-'12| Prod A  | 10     | 5
05-'12| Prod A  | 3      | 5
05-'12| Prod B  | 4      | 5
05-'12| Prod C  | 13     | 5
05-'12| Prod C  | 5      | 5

从这张表中我得到了一个数据透视表,其中包含SUM(金额),AVERAGE(以秒为单位的间隔)按月和产品。

Month | Product | SUM of Amount | AVG of Interval in sec
--------------------------------------------------------
05-'12| Prod A  | 13            | 5
05-'12| Prod B  | 4             | 5
05-'12| Prod C  | 18            | 5

到目前为止一切顺利。现在我想在我的数据透视表中添加和添加一个列,并给出了秒的数量/ AVG间隔的结果。

添加计算值=SUM(Amount)/AVERAGE(Interval)并没有给我正确的值。 Excel给了我:

Month | Product | SUM of Amount | AVG of Interval in sec | Amount per sec
-------------------------------------------------------------------------
05-'12| Prod A  | 13            | 5                      | 1.3
05-'12| Prod B  | 4             | 5                      | 0.8
05-'12| Prod C  | 18            | 5                      | 1.8

它实际上做的是=每个月的Sum(Amount)/ SUM(以秒为单位)和基于第一个表中的值的Product。但我正在寻找:

Month | Product | SUM of Amount | AVG of Interval in sec | Amount per sec
-------------------------------------------------------------------------
05-'12| Prod A  | 13            | 5                      | 2.6
05-'12| Prod B  | 4             | 5                      | 0.8
05-'12| Prod C  | 18            | 5                      | 3.6

因此,通过枢轴字段“以秒为单位的AVG”来字面划分枢轴字段“数量之和”。

如何实现这一目标?

3 个答案:

答案 0 :(得分:8)

如果有其他人遇到此问题,我找到的解决方案是向您的数据集添加帮助“计数”列,其中每个记录在“计数”字段下输入1。

然后,为了达到平均值的效果,您可以使用:

SUM(FIELD_TO_AVERAGE)/SUM(COUNT)

我认为这应该适用于需要平均值的所有情况,但我没有对其进行过广泛的测试。

答案 1 :(得分:4)

您需要参考公式中的数据透视表数据,如下所示:

=GETPIVOTDATA("Sum of Amount",$A$3,"Product","A")/GETPIVOTDATA("Average of Interval",$A$3,"Product","A")

修改 从您的电子表格中: 要将所需列添加到数据透视表A:

K5=GETPIVOTDATA("Sum of Amount",$H$2,"Month",DATE(2012,5,1),"Product","Prod A")/GETPIVOTDATA("Average of Interval",$H$2,"Month",DATE(2012,5,1),"Product","Prod A")
K6=GETPIVOTDATA("Sum of Amount",$H$2,"Month",DATE(2012,5,1),"Product","Prod B")/GETPIVOTDATA("Average of Interval",$H$2,"Month",DATE(2012,5,1),"Product","Prod B")
K7=GETPIVOTDATA("Sum of Amount",$H$2,"Month",DATE(2012,5,1),"Product","Prod C")/GETPIVOTDATA("Average of Interval",$H$2,"Month",DATE(2012,5,1),"Product","Prod C")

您还可以通过在原始数据表中添加额外的列来生成列:每个条目的数量/秒,然后当您旋转所有数据时,该列的产品将是您想要的结果。

修改(2):

上面的公式是单元格公式而不是透视表公式,不能使用引用抱歉我没有说清楚。我正在研究一个数据透视表计算公式,但是现在上面作为您的数据透视表旁边的列应该可以产生您需要的数据。

答案 2 :(得分:0)

在源(计数器)中创建一个字段,并在每行中放入“ 1”。将其也放入枢轴,并用该字段除以秒的总和-那么它将是一个平均值。将原始字段除以该平均值,这样您的最终决赛分区将是每个计数器的秒总和,这将使技巧:)