如何计算选手最近10轮非空赛事得分的平均值?
嘿,这个问题我之前帮不少朋友处理过——空白单元格确实会打乱“取最近10轮”的逻辑,不过咱们用函数组合就能完美解决,不管你用的是新版Excel、旧版Excel还是Google Sheets,都有对应的方案,我给你详细拆解:
方法一:新版Excel专属(Excel 365/2021,支持动态数组)
直接用FILTER+TAKE+AVERAGE的组合公式,逻辑清晰还不容易出错:
=AVERAGE(TAKE(FILTER(B2:X2, NOT(ISBLANK(B2:X2))), -10))
- 第一步:
FILTER(B2:X2, NOT(ISBLANK(B2:X2)))筛选出当前行所有非空的得分(不管是真正的空白还是公式返回的空文本,NOT(ISBLANK)都能识别) - 第二步:
TAKE(..., -10)从筛选结果里取出最后10个值(也就是最近的10轮有效得分) - 第三步:
AVERAGE计算这10个值的平均值,如果有效得分不足10轮,会自动计算现有所有有效得分的平均,不会报错
方法二:旧版Excel兼容方案(2019及以前版本)
旧版Excel不支持动态数组,得用数组公式实现,输入完成后要按Ctrl+Shift+Enter触发计算:
=AVERAGE(INDEX(B2:X2, SMALL(IF(B2:X2<>"", COLUMN(B2:X2)-COLUMN(B2)+1), MAX(1, COUNT(B2:X2)-9))):INDEX(B2:X2, SMALL(IF(B2:X2<>"", COLUMN(B2:X2)-COLUMN(B2)+1), COUNT(B2:X2))))
- 核心逻辑:先标记所有非空单元格的位置,再用
SMALL定位到最后10个非空单元格的首尾,最后通过INDEX锁定区域计算平均值 MAX(1, COUNT(B2:X2)-9)是为了避免当有效得分不足10轮时出现错误,确保从第一个有效得分开始计算
方法三:Google Sheets适配版
Google Sheets原生支持动态数组函数,直接用和新版Excel一样的公式即可:
=AVERAGE(TAKE(FILTER(B2:X2, NOT(ISBLANK(B2:X2))), -10))
小提示
如果你的空白单元格是由公式返回的空字符串(比如=""),可以把筛选条件改成B2:X2<>"",公式调整为:
=AVERAGE(TAKE(FILTER(B2:X2, B2:X2<>""), -10))
这样就能兼容所有空白场景啦~
内容的提问来源于stack exchange,提问作者Abartel
相关产品推荐
相关产品推荐

