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

amo*_*eba 3 excel

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

我想把这张桌子翻过来:

Site | Year | Value
A    | 1999 | 5
A    | 1999 | 10
A    | 2001 | 12
B    | 1999 | 6
C    | 1996 | 4
C    | 1996 | 10
Run Code Online (Sandbox Code Playgroud)

进入此表:

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
Run Code Online (Sandbox Code Playgroud)

如果你会发现,在年平均以平均内重复值一个一年内一个网站.然后,Site-Average从年平均值计算其平均值.

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

pan*_*-34 5

年平均值的公式是

=AVERAGE(IF(($A$2:$A$7=A2)*($B$2:$B$7=B2),$C$2:$C$7,""))
Run Code Online (Sandbox Code Playgroud)

并为网站平均

=AVERAGE(IF($A$2:$A$7=A2,$D$2:$D$7,""))
Run Code Online (Sandbox Code Playgroud)

使用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,""))
Run Code Online (Sandbox Code Playgroud)

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