【问题标题】:Count Average Value per Any Arbitrary Grouping计算每个任意分组的平均值
【发布时间】:2013-03-29 22:40:46
【问题描述】:

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

34 107.8
22 5
22 97
45 76.5
46 16

我需要创建一个表格/图表/数据透视表,向我显示每个任意组的 AVERAGE 值。比方说:

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

【问题讨论】:

    标签: excel pivot formula average excel-2003


    【解决方案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")
    

    【讨论】:

    • 谢谢,成功了。 (我必须填写其他单元格才能获得完整的表格。)
    【解决方案2】:

    如果您在 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))))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多