计算任意任意分组的平均值

时间:2013-03-29 22:40:46

标签: excel pivot formula average excel-2003

我在Excel中有一个2列,它将Age与某个值配对:例如,

34 107.8
22 5
22 97
45 76.5
46 16

我需要创建一个table / chart / pivot,它显示每个任意组的AVERAGE值。让我们说:

BRACKET   VALUE AVG
0-39      ...
40        ...
41        ...
42-60     ...

2 个答案:

答案 0 :(得分:1)

假设您在A列中存储了年龄,而在B列中存储了您的值(我假设您将行放在第2-19行中,相应地进行调整)

将每个桶的最小年龄(0,40,41,42,60)存储在D列中,并在最后一个值(例如150)下添加一个非常高的值。

Excel 2003解决方案: 在E2中输入此公式,然后将其复制:

=IF(SUMPRODUCT(($A2:$A19>=D2)*(A2:A19<D3)),SUMPRODUCT($B2:$B19*($A2:$A19>=D2)*(A2:A19<D3))/SUMPRODUCT(($A2:$A19>=D2)*(A2:A19<D3)),"No values")

Excel 2007+解决方案: 在E2中输入此公式并将其复制下来:

=IFERROR(AVERAGEIFS($B:$B,$A:$A,">="&D2,$A:$A,"<"&D3),"No values")

答案 1 :(得分:1)

如果你在D2中有“下限列表”:D10如彼得所暗示那么E2中的这个“数组公式”也可以完成这项工作:

=AVERAGE(IF(LOOKUP($A$2:$A$19,D$2:D$10)=D2,B$2:B$19))

使用 CTRL + SHIFT + ENTER 进行确认,以便在公式栏中的公式周围显示{和}之类的花括号... ...并复制列

如果该括号没有值更改为

,则取代#DIV/0!错误为零

=LOOKUP(10^10,IF({1,0},0,AVERAGE(IF(LOOKUP($A$2:$A$19,D$2:D$10)=D2,B$2:B$19))))