Excel 宏:列中的最后一个非空单元格

Excel 宏:列中的最后一个非空单元格

这是这个

在 Microsoft Excel 中,以下公式可用于查找列中最后一个非空单元格的值:

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

我的问题是,如何将此公式转换为宏函数?这样我就可以像这样使用它:

=GetLastValueInColumn('A')

确实,我需要将字母“A”转换为范围 A:A,但不知道该如何操作。

答案1

或者也可以在宏中使用工作表公式,即

Function GetLastValueInColumn(r As Range) As Range
  GetLastValueInColumn = Application.WorksheetFunction.LOOKUP(2,1/(r<>""),r)
End Function

或者使用一些 VBA 特定的方法,其中详细介绍了几个这个答案在 StackOverflow 上。

答案2

正如 eirikdaude 所写,有很多方法可以在 VBA 中完成您的主要任务。

为了将字符串转换为引用整个列的范围对象,可以使用以下命令:

Function LastValueInColumn(COL)
  Dim R as Range
  Set R = Cells(1,COL).EntireColumn

只要 COL 是有效的列字母或数字,此方法即可奏效(将 R 设置为所需列)。但如果 COL 是范围对象或无效列引用,则会导致运行时错误。因此,根据您的应用程序,您可能需要进行一些错误检查。

答案3

尝试一下:

Public Function GetLastValue(rIn As Range) As Variant
    Dim N as Long
    N = Cells(Rows.Count, rIn.Column).End(xlUp).Row
    GetLastValue = Cells(N, rIn.Column)
End Function

像这样使用它:

在此处输入图片描述

笔记:

这是所需的格式:

=GetLastValue(A:A)

相关内容