我已经在这里看到了一些关于查找最后一项的相关问题,但我的问题有点不同,因为我试图找到列中最后一个非空白或非零值,并返回该值,如果那里没有任何内容,则返回 0。我编写了一个对我有用的公式,除了列中的第一行,并返回错误,因为它找不到值。我试图将公式更改为在未找到任何内容时返回 0,但显然最终使问题变得更糟。这是我目前对公式的尝试:
=IF(B12=0,0,IF(LOOKUP(2,1/($B$10:B11<>0),$B$10:B11)=0, 0, B12 - IF(ISBLANK(LOOKUP(2,1/($B$10:B11<>0),$B$10:B11)), 0, LOOKUP(2,1/($B$10:B11<>0),$B$10:B11))))
答案1
如果还有人认为除以零/FALSE 不美观,那么这里有一些替代方法:
• 如果您处理的是字符串而不是数字,则可以使用高效的 XLOOKUP 方法:
=XLOOKUP("*",A2:A10,A2:A10,"N/A",2,-1)
这将从下向上搜索范围,并在找到非空字符串时停止。
• 没有无穷大的基本实现:
=XLOOKUP(TRUE,A2:A10<>"",A2:A10,"N/A",0,-1)
• 如果您寻找的是职位而不是价值:
=MAX(IF(A2:A10="",0,ROW(A:A)))
或者
=XLOOKUP(TRUE,A2:A10<>"",ROW(A2:A10)-ROW(A2)+1,0,0,-1)
在这些情况下,返回值零表示空范围。
答案2
我想建议几个在不同情况下有效的公式:
公式返回列或范围内的最后一个非空、非零值:
=LOOKUP(2,1/(A:A<>0),A:A)
=LOOKUP(2,1/(A2:A10<>0),A2:A10)
另一个是公式仅在列或范围内返回最后一个非空白非零正值:
=LOOKUP(1,0/(0+A:A>0),A:A)
注意:
第二个公式是可选的。
根据需要调整公式中的单元格引用。
答案3
不再推荐使用 LOOKUP。要使用 XLOOKUP:
=XLOOKUP(2,1/(A2:A10<>0),A2:A10,"N/A",-1,-1)