这是这个。
在 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)