我正在尝试构建一个简单的函数,该函数具有1个单元格输入,基于该函数,它会偏移此卷中最后一个连续填充的单元格。
Option Explicit
Function LastCell(CellA As String)
LastCell = Range(CellA).End(xlDown).Value
End Function
出于某种原因,它不起作用......
如果没有VBA,我会通过以下方式获得所需的结果:=LOOKUP(9E+50,B:B)
。
不是很优雅,也不总是有用。
答案 0 :(得分:1)
您的查询可以使用数字,但如果列只包含文本,则会返回#N/A
,如果是混合文本和数字,则会返回错误答案。更确定的公式可能是,
=max(iferror(match(1e99, B:B), 0), iferror(match("žžž", B:B), 0))
这将标识具有最后一个数字,日期或文本值的行。错误被忽略。
答案 1 :(得分:1)
试试此代码
Option Explicit
Function LastCell(CellA As range)
LastCell = CellA.End(xlDown).Value
End Function
将其用作= LastCell(B1)
请注意,此方法不适用于隐藏或已过滤的行或合并的单元格。
答案 2 :(得分:0)
调用函数时尝试:
MsgBox LastCell(ActiveCell.Address)
在你给出的例子中,你需要调用这样的函数:
LastCell("A1")
答案 3 :(得分:0)
这将起作用,自下而上而不是自上而下:
LastCell = cells(rows.count,CellA.column).End(xlUp).Value
这将返回最后一个单元格的值(与您的代码类似),如果您想要地址,则将.Value更改为.Address。
编辑:同时将CellA的Dim从String更改为Range