一列中最后一个非空单元格

132

有没有人知道在Microsoft Excel中找到一列中最后一个不为空的单元格值的公式?


我会考虑使用VBA来完成这个任务。 - David Heffernan
如果您不想担心排序顺序,不想输入数组公式,并且在您尝试查找最后一个非空单元格的列中没有巨大的负数数字值或以“ZZZZZZZZZZZZZZZZZZZZZZZZ”开头的文本值,则更有效的公式是Max()、Iferror()和Match()的组合,如下所示:=MAX(IFERROR(MATCH(-9.99999999999999E+27,Sheet2!A:A,-1),0),IFERROR(MATCH("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ",Sheet2!A:A,1),0)),它返回行号,然后可以间接引用以返回所需的值。 - Josh Fierro
26个回答

0

这个公式适用于我使用的Office 2010:

=LOOKUP(2;1/(A1:A100<>"");A1:A100)

A1:第一个单元格 A100:参照比较的最后一个单元格


0

我也遇到了同样的问题。这个公式同样适用:

=INDIRECT(CONCATENATE("$G$",(14+(COUNTA($G$14:$G$65535)-1))))

14是你想要计数的行中第一行的行号。

慢性爪牙


0
我们将使用INDEX、MAX、COUNTA和OFFSET函数的组合。
假设您想要找到列A中最后一个非空值,请使用以下公式:
=INDEX(A:A, MAX(ROW(A:A)*(A:A<>"")))

(A:A<>""):这将创建一个由TRUE/FALSE值组成的数组,其中TRUE表示列A中非空单元格。
ROW(A:A)*(A:A<>""):这将行号与TRUE/FALSE数组相乘,得到非空单元格的行号数组和空单元格的0数组。
MAX(ROW(A:A)*(A:A<>"")):这将从行号数组中找到最大行号,对应于列A中的最后一个非空单元格。
INDEX(A:A, MAX(ROW(A:A)*(A:A<>""))):最后,INDEX函数根据最大行号返回列A中最后一个非空单元格的值。
请确保在公式中调整列引用以匹配实际数据列。将所有"A:A"的实例替换为正确的列字母(例如,对于列B使用"B:B",对于列C使用"C:C",依此类推)。
请尝试此公式,它应该给出指定列中最后一个非空单元格的值。如果仍然不起作用,请确保您的数据是连续的(范围内没有空行),并且指定列中有数据。

-1

好的,我遇到了与提问者相同的问题,并尝试了两个最佳答案。但是只得到了公式错误。结果发现我需要将“,”替换为“;”才能使公式正常工作。我正在使用XL 2007。

例如:

=LOOKUP(2;1/(A:A<>"");A:A)

或者

=INDEX(A:A;MAX((A:A<>"")*(ROW(A:A))))

-1
一个适合我的简单方法:
=F7-INDEX(A:A,COUNT(A:A))

-3

为了版本跟踪(在数字前添加字母v),我发现这个在Xcelsius(SAP仪表板)中运作良好。

="v"&MAX(A2:A500)

1
似乎不够通用,因为它依赖于严格的升序。 - Nathan Tuggy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接