枢轴计算公式:SUM(Field1)/AVG(Field2)
Posted
技术标签:
【中文标题】枢轴计算公式:SUM(Field1)/AVG(Field2)【英文标题】:Pivot Calculated formula: SUM(Field1)/AVG(Field2) 【发布时间】:2012-09-06 07:11:51 【问题描述】:我有一个简单的表格,其中包含按日期和产品名称以秒为单位的数量和间隔。
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(Amount)、AVERAGE(Interval in sec)。
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
到目前为止一切顺利。现在我想在我的数据透视表中添加一个额外的列,并为我提供 SUM of Amount / AVG of Interval in sec 的结果。
添加计算值=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(Interval in sec) 每个 Month 和 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
因此,从字面上将枢轴字段“金额总和”除以枢轴字段“以秒为单位的间隔的平均值”。
如何做到这一点?
【问题讨论】:
元问题:此类 Excel 高级用户问题是否最适合 ***、SuperUsers 或其他一些 StackExchange 站点? 【参考方案1】:如果其他人遇到这个问题,我发现的一个解决方案是在您的数据集中添加一个辅助“计数”列,其中每条记录在“计数”字段下输入一个 1。
那么,为了达到Average的效果,可以使用:
SUM(FIELD_TO_AVERAGE)/SUM(COUNT)
我相信这应该适用于需要平均值的所有情况,但我没有对其进行过广泛的测试。
【讨论】:
这是一个很好的解决方法,但在其他情况下不起作用。例如,您不能轻易地做标准偏差。我最终使用了 powerquery。【参考方案2】:您需要在公式中引用数据透视表数据,如下所示:
=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):
上面的公式是单元格公式而不是数据透视表公式,不能使用引用对不起我没有说清楚。我正在研究一个数据透视表计算公式,但现在上面作为数据透视表旁边的一列应该能产生你需要的东西。
【讨论】:
您能否根据此示例 Excel 表创建此公式:tempfiles.net/download/201209/262303/Voorbeeld.html。支点 A 只是“Originele table”的支点,支点 B 是错误的结果,支点 C 是支点加上手动添加的期望结果。您可以将您的解决方案添加到数据透视表 C 中吗? Ok 打开并添加了基于数据透视表 A 的特定公式。 Excel 的数据透视表支持给我留下了深刻的印象和失望。一方面,它是快速分组和显示信息的强大工具。另一方面,它受到奇怪的限制的阻碍,例如无法将计算字段基于总和以外的值类型,例如平均值或计数,即使它们显示在数据透视表中。为什么我不能在计算字段中引用我的其他数据透视表列?【参考方案3】:在源(计数器)中创建一个字段并在每一行中输入“1”。将它也放入枢轴并用该字段除以秒的总和 - 然后它将是一个平均值。将原始字段除以该平均值,因此您的最终除法将是每个计数器的秒数总和,这将取得成功:)
【讨论】:
以上是关于枢轴计算公式:SUM(Field1)/AVG(Field2)的主要内容,如果未能解决你的问题,请参考以下文章