3

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

我正在尝试扭转这张桌子:

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 从 Year-Average 值计算其平均值。

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

4

3 回答 3

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。

于 2012-06-12T05:46:03.107 回答
2

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

将其Year Average放入单元格 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

快照

在此处输入图像描述

编辑

这是获得站点平均的方法:)

为了达到您想要的站点平均值,我们必须使用辅助列。见快照

在单元格 E2 中输入此公式

=D2

在 E3 中输入这个公式

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

并将其拖下。

现在在单元格 F2 中输入这个公式

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

然后按CTL+ SHIFT+ENTER

把公式抄下来。

如果需要,隐藏 Col E

在此处输入图像描述

于 2012-06-12T04:43:57.750 回答
1

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

于 2012-06-12T02:13:12.593 回答