Excel无辅助列单公式求平均得分最高公司(非零计数平均规则)
无需辅助列,用单个公式找出平均得分最佳的公司
先把你的数据整理成清晰的表格:
| Company | Score 1 | Score 2 | Score 3 |
|---|---|---|---|
| Apple | 5 | 4 | 3 |
| Banana | 3 | 6 | 6 |
| Kiwi | 0 | 5 | 1 |
规则说明
平均得分的计算方式是非0分数的总和除以非0分数的个数:比如Kiwi的得分总和是0+5+1=6,大于0的分数有2个,所以平均得分为6/2=3(而非(0+5+1)/3=2)。我们的目标是不用任何辅助列,仅用一个公式找出平均得分最高的公司(示例中是Banana)。
公式方案(分Excel版本)
1. 兼容所有Excel版本的数组公式
如果你用的是旧版Excel(2019及以前),可以用这个数组公式(输入后按Ctrl+Shift+Enter确认):
=INDEX(A:A,MATCH(MAX((B2:D4)/(B2:D4>0)),MMULT((B2:D4)/(B2:D4>0),TRANSPOSE(COLUMN(B2:D4)^0))/MMULT(--(B2:D4>0),TRANSPOSE(COLUMN(B2:D4)^0)),0))
2. Excel 365/2021 简洁版(动态数组)
新版Excel支持动态数组和BYROW函数,公式更易读:
=INDEX(A2:A4,MATCH(MAX(BYROW(B2:D4,LAMBDA(r,SUM(FILTER(r,r>0))/COUNTA(FILTER(r,r>0))))),BYROW(B2:D4,LAMBDA(r,SUM(FILTER(r,r>0))/COUNTA(FILTER(r,r>0)))),0))
公式逻辑解释(以BYROW版本为例)
BYROW(B2:D4,LAMBDA(r,...)):遍历表格中每一行的得分数据,r代表当前行的得分区域FILTER(r,r>0):筛选出当前行中所有大于0的分数,自动忽略0分SUM(FILTER(...))/COUNTA(FILTER(...)):计算当前行的非0分数总和除以个数,得到平均得分MAX(...):从所有行的平均分中找出最高值MATCH(...):定位到最高平均分所在的行号INDEX(A2:A4,...):根据行号提取对应的公司名称
这样就能一步到位得到你想要的最佳公司啦!
内容的提问来源于stack exchange,提问作者user9836688
相关产品推荐
相关产品推荐

