多列条件求平均值:如何跨所有Place、Gate列按闸位统计赛马平均名次
通用公式解法
适用Excel 365/Google Sheets新版本
假设你的原始成绩数据规则为每两列一组,顺序为「对应赛程的名次列(Place)、闸位列(Gate)」,数据从第2行开始(第2行是Place、Gate表头,第3行起为赛事记录)。
你要填充的平均表中,闸位1、2…12分别在表头行的B列到M列,在「Average position by gate」行对应闸位1的单元格输入以下公式,右拉即可自动计算所有闸位的平均名次:
=AVERAGE(TOCOL(IF((B:B=B$1)+(D:D=B$1)+(F:F=B$1), (A:A,C:C,E:E), NA()), 2))
- 公式中
B:B、D:D、F:F为所有闸位列,有新增赛程就按规律追加条件+(H:H=B$1)即可 A:A、C:C、E:E为和闸位列一一对应的名次数列,新增赛程同步追加对应列即可- 公式会自动过滤无匹配的无效值,只统计所有赛程中目标闸位对应的名次求平均
适用旧版Excel(无新数组函数)
用SUMIF加COUNTIF拼接的方式实现,同样右拉即可适配所有闸位:
=(SUMIF(B:B,B$1,A:A)+SUMIF(D:D,B$1,C:C)+SUMIF(F:F,B$1,E:E))/(COUNTIF(B:B,B$1)+COUNTIF(D:D,B$1)+COUNTIF(F:F,B$1))
每新增一组赛程,就对应在分子加一组SUMIF(对应闸位列, 目标闸位, 对应名次列),分母加一组COUNTIF(对应闸位列, 目标闸位)即可。
样例验证
用你给出的测试数据计算,结果完全匹配:
- 闸位5:仅1000米赛程获得第3名,平均为3
- 闸位8:仅1000米赛程获得第1名,平均为1
- 闸位10:仅1200米赛程获得第8名,平均为8
- 闸位12:仅1200米赛程获得第2名,平均为2
内容的提问来源于stack exchange,提问作者John Farkerson
相关产品推荐
相关产品推荐

