Excel公式求助:获取最后一个大于0值的单元格位置序号
Excel公式求助:获取最后一个大于0值的单元格位置序号
嘿,这个需求我之前也碰到过,给你几个实用的公式方案,分情况来看:
适用于Excel 365/2021(支持动态数组)
如果你用的是新版本Excel,推荐用XLOOKUP公式,写法更直观,不需要按数组快捷键:
=XLOOKUP(TRUE,A1:J1>0,COLUMN(A1:J1)-COLUMN(A1)+1,,0,-1)
解释:
XLOOKUP(TRUE,A1:J1>0,...)用来匹配“单元格值大于0”的条件- 最后一个参数
-1表示从后往前查找,刚好定位到最后一个满足条件的单元格 COLUMN(A1:J1)-COLUMN(A1)+1是计算单元格在当前区域内的相对位置(从1开始计数),如果需要绝对列号,直接写COLUMN(A1:J1)就行
兼容旧版Excel(无动态数组支持)
要是你用的是旧版本Excel,用数组公式就能解决,输入完公式后要按Ctrl+Shift+Enter确认(不要直接回车):
=MAX(IF(A1:J1>0,COLUMN(A1:J1)-COLUMN(A1)+1))
解释:
IF(A1:J1>0, 位置序号)会把所有大于0的单元格替换成对应的位置,其余返回FALSEMAX函数会自动忽略FALSE,取最大的那个位置序号,也就是最后一个大于0的单元格位置
特殊情况处理
如果你的目标区域里没有任何大于0的数值,上面的公式会返回#N/A,可以加个IFERROR来优化:
=IFERROR(XLOOKUP(TRUE,A1:J1>0,COLUMN(A1:J1)-COLUMN(A1)+1,,0,-1),0)
这样没找到符合条件的单元格时,会返回0,结果更友好。
用你的例子测试:把A1到J1设为0,1,7,0,0,1,3,4,0,0,不管用哪个公式,都会返回8,完全符合你的需求~
备注:内容来源于stack exchange,提问作者niklas




