如何获取Excel列中最后一个大于0的单元格所在行号?
获取K列目标非零值的行号
嘿,我来帮你搞定这个问题!首先得理清楚:你当前用的公式=INDEX($K$2:K15,MATCH(TRUE,INDEX($K$2:K15>0,0),)),默认情况下其实是匹配第一个满足K列单元格>0的内容,但你说它返回最后一个,可能是你的数据区域或者匹配参数有特殊情况?不过不管怎样,要拿到对应单元格的行号,咱们有几种靠谱的方法:
方法1:基于你现有公式直接改造
既然你已经能用现有公式定位到目标单元格,那只要把INDEX的结果换成ROW函数来抓取行号就行,公式如下:
=ROW(INDEX($K$2:$K$15,MATCH(TRUE,INDEX($K$2:$K$15>0,0),0)))
这个公式会直接返回你当前公式找到的那个非零值所在的工作表行号。
方法2:精准获取最后一个大于0的单元格行号
如果你确实是要找最后一个符合条件的行号,用LOOKUP会更稳妥,公式逻辑也更清晰:
=LOOKUP(2,1/($K$2:$K$15>0),ROW($K$2:$K$15))
简单解释下原理:1/($K$2:$K$15>0)会把所有大于0的单元格位置转换成1,不符合的位置变成错误值;LOOKUP会自动忽略错误值,找到最后一个1对应的行号,完美适配你的需求。
额外补充:如果要找第一个非零值的行号
要是你之后需要找第一个大于0的单元格行号,也可以用这个更简洁的公式:
=MATCH(TRUE,$K$2:$K$15>0,0)+ROW($K$2)-1
这里ROW($K$2)-1的作用是把区域内的相对行号转换成工作表的绝对行号,避免因为数据区域不是从第1行开始而出错。
内容的提问来源于stack exchange,提问作者Reb
相关产品推荐
相关产品推荐

