Excel 公式,获取范围动态的最后一行

Excel 公式,获取范围动态的最后一行

我想获取某个范围的最后一行号,但该范围是动态的。

我无法使用命名范围,因为有时电子表格中定义的范围会发生变化。例如,今天命名范围可能有 50 行,明天可能就有 51 行。据我所知,命名范围不会自行修改。

我需要类似这样的内容,获取 A:A = 'stack' 的最后一行。

尝试做类似的事情,https://www.excel-easy.com/examples/dynamic-named-range.html,实施起来有困难。

任何帮助,将不胜感激。

答案1

在包含文本的列中,您可以使用此公式找到具有特定值的最后一行。这是一个数组公式,必须使用 Ctrl+Shift+Enter 进行确认

=MAX((A1:A100="stack")*(ROW(A1:A100)))

参见下方屏幕截图中的单元格 C1。

您可以将这个函数用于动态范围名称。此公式始终从 A1 开始范围,一直到最后一个包含文本“stack”的单元格:

=OFFSET(Sheet1!$A$1,0,0,MAX((Sheet1!$A$1:$A$100="stack")*(ROW(Sheet1!$A$1:$A$100))),1)

在名称管理器中,您不需要使用 Ctrl+Shift+Enter,因为所有命名公式都会自动评估为数组公式。如果您使用此方法,最好限制公式中的行数,并且不要使用整列引用。

请注意屏幕截图中围绕当前范围的行进蚂蚁。

在此处输入图片描述

如果您想要包含直到最后一行的所有带有文本的行,那么您可以使用更简单的公式。

=OFFSET(Sheet1!$A$1,0,0,MATCH("zzzzz",Sheet1!$A:$A,1),1)

使用 Match,您可以使用整列引用。

答案2

假设您的第一个单元格永远不会改变,并且假设它是"A1"。为此,您应该使用如下代码片段:

private function get_last_row(byref ws as worksheet, optional byval letter_of_first_col as string = "A", optional byval index_of_first_row as interger = 1) as long
    with ws
        get_last_row = .range(letter_of_first_row & index_of_first_row).currentRegion.rows.count + (index_of_first_row - 1)
    end with
end function

希望这对你有帮助

相关内容