我在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 ...
答案 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))))