如何用AVERAGE(INDEX,MATCH)计算指定机组最后182行的日均公里数?
解决方案:计算Excel表格中指定列最后182行的平均值
方案1:Excel 365/2021 版本(推荐,简洁高效)
使用TAKE函数直接截取对应列的最后182行,再计算平均值:
=AVERAGE(TAKE(INDEX(Table1[#Data],,MATCH(B5, Table1[#Headers], 0)), -182))
逻辑说明:
MATCH(B5, Table1[#Headers], 0):定位Table2中B5单元格的机组编号在Table1表头中的列位置;INDEX(Table1[#Data],,列位置):提取对应机组的所有每日公里数数据行(排除表头);TAKE(..., -182):从数据列的末尾向前取182行,若数据行数不足182,则自动取全部现有行;AVERAGE:计算截取区域的平均值。
方案2:兼容旧版Excel(无TAKE/LET函数)
如果你的Excel版本不支持新函数,用嵌套INDEX+COUNTA实现:
=AVERAGE(INDEX(INDEX(Table1[#Data],,MATCH(B5,Table1[#Headers],0)),MAX(1,COUNTA(INDEX(Table1[#Data],,MATCH(B5,Table1[#Headers],0)))-181)):INDEX(INDEX(Table1[#Data],,MATCH(B5,Table1[#Headers],0)),COUNTA(INDEX(Table1[#Data],,MATCH(B5,Table1[#Headers],0)))))
逻辑说明:
- 重复的
MATCH函数负责定位机组对应的列; COUNTA(...)统计该列的有效数据行数(即已录入的天数);MAX(1, 行数-181):确保当数据不足182行时,起始行取第1行,避免出现负数行号;- 前后两个
INDEX分别定位起始行和结束行,形成计算范围后取平均。
关键注意事项
- 确保Table1中每个机组的数据列无中间空行,否则
COUNTA会无法准确统计总行数; - 新增数据行后,公式会自动更新
COUNTA的结果,从而自动截取最新的182行数据; - 结构化引用(
Table1[#Data]、Table1[#Headers])确保公式不受表格行列调整的影响。
内容的提问来源于stack exchange,提问作者CKZ
相关产品推荐
相关产品推荐

