使用VBA在Excel中查找最后一行的函数

我试图build立一个简单的函数,它有1个单元格input,基于这个函数,它抵消了这个卷中最后一个连续填充的单元格。

Option Explicit Function LastCell(CellA As String) LastCell = Range(CellA).End(xlDown).Value End Function 

出于某种原因,这是行不通的…

如果没有VBA,我可以通过例如=LOOKUP(9E+50,B:B)来获得所需的结果。

不是一个非常优雅,并不总是有用的。

试试这个代码

 Option Explicit Function LastCell(CellA As range) LastCell = CellA.End(xlDown).Value End Function 

使用它= LastCell(B1)

请注意,此方法不适用于隐藏或过滤行或合并的单元格。

您的查找与数字是好的,但将返回#N/A如果列中只包含文本或可能错误的答案如果混合的文本和数字。 更确定的公式可能是,

 =max(iferror(match(1e99, B:B), 0), iferror(match("žžž", B:B), 0)) 

这将确定最后一个数字,date或文本值的行。 错误被忽略。

这将起作用,从下而上而不是从上到下:

 LastCell = cells(rows.count,CellA.column).End(xlUp).Value 

这将返回最后一个单元格的值(类似于您的代码),如果您想要地址,则将.Value更改为.Address。

编辑:另外改变从string到范围CellA的昏暗

当调用函数时,请尝试:

 MsgBox LastCell(ActiveCell.Address) 

在你给的例子中,你需要调用这个函数:

 LastCell("A1")