如何在Excel中结合LARGE与AVERAGEIF函数计算指定排名数值的平均值
Excel公式修改方案
你原公式的逻辑是:当C2值为FALSE时,计算F列匹配F2的所有W列数值的平均值并向上取整,否则返回-。调整为计算匹配项第二、第三高数值的平均值,修改方案如下:
适用Excel 365/2021及以上版本(支持动态数组,直接输入即可生效)
公式直接替换原公式即可:
=IF(C2=FALSE,ROUNDUP(AVERAGE(LARGE(FILTER(W:W,F:F=F2),{2,3})),0),"-")
逻辑说明:
- 先用
FILTER(W:W,F:F=F2)筛选出所有F列等于F2的W列有效数值- 用
LARGE(...,{2,3})同时提取筛选结果里的第二、第三高的两个数值- 对两个数值求平均后保留原有的ROUNDUP向上取整逻辑
适用Excel 2019及更早版本(不支持动态数组)
需要使用数组公式,输入完成后按下Ctrl+Shift+Enter组合键触发数组计算才能生效:
=IF(C2=FALSE,ROUNDUP(AVERAGE(LARGE(IF(F:F=F2,W:W),{2,3})),0),"-")
异常处理补充
如果匹配F2的有效数值不足3个,上述公式会返回#NUM!错误,你可以新增IFERROR逻辑将异常结果也展示为-,修改后公式示例(365版本为例):
=IF(C2=FALSE,IFERROR(ROUNDUP(AVERAGE(LARGE(FILTER(W:W,F:F=F2),{2,3})),0),"-"),"-")
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

