也许这个问题最好用表格解释,而不是用文字解释。
我正试着转此表:
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从年平均值计算其平均值。
我可以手动执行此操作,但我的真实数据集有数千行,我正在寻找可重复使用的程序。
答案 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
<强>快照强>
修改强>
以下是获取网站平均值的方法:)
要实现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
答案 2 :(得分:1)
您可以使用数据透视表计算年份和网站的平均值,然后使用vlookup将相关的平均值附加到初始表的每一行。