如何根据其他单元格中存在的标准计算平均值

时间:2012-06-12 02:06:48

标签: excel

也许这个问题最好用表格解释,而不是用文字解释。

我正试着转此表:

Site | Year | Value
A    | 1999 | 5
A    | 1999 | 10
A    | 2001 | 12
B    | 1999 | 6
C    | 1996 | 4
C    | 1996 | 10

进入此表:

Site | Year | Value | Year-Average | Site-Average
A    | 1999 | 5     | 7.5          | 9.75
A    | 1999 | 10    | 7.5          | 9.75
A    | 2001 | 12    | 12           | 9.75
B    | 1999 | 6     | 6            | 6
C    | 1996 | 4     | 7            | 8.5
C    | 1996 | 10    | 7            | 8.5

如果您注意到,年度平均值在一个网站内的一年年内平均重复值。然后,Site-Average从年平均值计算其平均值。

我可以手动执行此操作,但我的真实数据集有数千行,我正在寻找可重复使用的程序。

3 个答案:

答案 0 :(得分:5)

年平均值的公式为

=AVERAGE(IF(($A$2:$A$7=A2)*($B$2:$B$7=B2),$C$2:$C$7,""))

对于网站平均值

=AVERAGE(IF($A$2:$A$7=A2,$D$2:$D$7,""))

使用Ctrl-Shift-Enter将其作为数组公式输入到第一个单元格中,然后复制整个列。 如果您需要在计算网站平均值时排除重复年份,则公式会变得更长一些:

=AVERAGE(IF(($A$2:$A$8=A2)*(FREQUENCY(($A$2:$A$7=A2)*($B$2:$B$7=B2),($A$2:$A$7=A2)*($B$2:$B$7=B2))>0),$D$2:$D$7,""))

请注意,在第一次出现的输入范围中会有一个额外的行:$ A $ 2:$ A $ 8而不是$ A $ 2:$ A $ 7.

答案 1 :(得分:2)

使用这些数组公式。在单元格中输入公式后,需要按 CTL + SHIFT + ENTER

对于Year Average将其放入Cell D2

=SUMPRODUCT(($A$2:$A$7=A2)*($B$2:$B$7=B2)*($C$2:$C$7))/COUNT(IF($A$2:$A$7=A2,IF($B$2:$B$7=B2,$C$2:$C$7)))

我不确定,你是怎么得到8.5的C

<强>快照

enter image description here

修改

以下是获取网站平均值的方法:)

要实现Site-Average的所需,我们必须使用帮助列。请参见快照

在Cell E2中放了这个公式

=D2

在E3中放了这个公式

=IF(OR(A3<>A2,B3<>B2),D3,"")

然后将其拖下来。

现在在Cell F2中放入这个公式

=AVERAGE(IF($A$2:$A$7=A2,$E$2:$E$7,""))

并按 CTL + SHIFT + ENTER

复制公式。

如果需要,请隐藏Col E

enter image description here

答案 2 :(得分:1)

您可以使用数据透视表计算年份和网站的平均值,然后使用vlookup将相关的平均值附加到初始表的每一行。