Excel 公式获取列中最后一个非零或非空值并返回值

Excel 公式获取列中最后一个非零或非空值并返回值

我已经在这里看到了一些关于查找最后一项的相关问题,但我的问题有点不同,因为我试图找到列中最后一个非空白或非零值,并返回该值,如果那里没有任何内容,则返回 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)

相关内容