您可能想知道是否有一种方法可以返回列中的最后一个(不是最大的)值。例如,如果A1到A5中有值,那么您可能希望返回A5中的值。以后,如果在A6至A8中添加了值,则应返回A8中的值。

有两种解决方案。首先是使用如下公式:

=INDEX(A:A,COUNT(A:A))

该公式返回列中的最后一个数字值,条件是这些值以A1(在本例中)开头。仅当列中的所有值均为数字时,此方法才有效。如果这些值是非数字的,或者如果有空白单元格与这些值混合在一起,则需要使用其他方法。一种方法是将以下公式复制到B列中,即可能包含值的单元格的右侧:

=IF(ISNUMBER(A2),IF(A2<>0,ROW(A2),""),"")

在这种情况下,该公式返回A中任何包含大于零的数值的单元格的行号。然后,可以使用以下公式检索A列中的最后一个值:

=INDEX(A:A,MAX(B:B))

此公式之所以有效,是因为它从B列返回最大的行号,然后将其用作索引以从A列返回相应的值。

如果您的数据范围包含数字值和非数字值的混合(甚至可能是一些空白单元格混入了该范围),则可以考虑以下公式:

=LOOKUP(2,1/(1-ISBLANK(A:A)),A:A)

起初,这个公式的工作方式可能并不明显。 ISBLANK部分返回一个数组,该数组包含A列中每个单元格的True或False值,具体取决于该单元格是否为空白。从1中减去True或False值(实际上是1或0),以便最终得到True值为0而False值为1。

下一步是将1或0值用作1 / x中的除数。这样可以有效地“反转”该值,最终得到1(1/1)或#DIV / 0!错误(1/0)。请记住,这是一个数组,然后用作LOOKUP函数的参数。在数组中搜索的是值2,该值在那里不存在。 (请记住,数组仅包含值1或错误值。)LOOKUP函数实际上忽略了数组中的所有错误值,因此它返回包含A的最后一个数组元素在A:A范围内的偏移量。 1值。这对应于非空白范围内的最后一个单元格。

如您所知,有时返回列中的最后一个值会有些棘手。一种干净的方法是简单地开发自己的VBA函数,该函数返回所需的值。在这种情况下,您可以对函数进行编程以返回任何值,而不仅仅是数字值。 John Walkenbach的网站上提供了此类功能的一个很好的示例。查看以下内容:

http://spreadsheetpage.com/index.php/tip/determining_the_last_non_empty_cell_in_a_column_or_row/

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2512)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本:

链接:/ excelribbon-Retrieving_the_Last_Value_in_a_Column [检索列中的最后一个值]。