使用VBA

时间:2015-07-21 22:02:23

标签: excel vba

我正在尝试构建一个简单的函数,该函数具有1个单元格输入,基于该函数,它会偏移此卷中最后一个连续填充的单元格。

Option Explicit
Function LastCell(CellA As String)

    LastCell = Range(CellA).End(xlDown).Value

End Function

出于某种原因,它不起作用......

如果没有VBA,我会通过以下方式获得所需的结果:=LOOKUP(9E+50,B:B)

不是很优雅,也不总是有用。

4 个答案:

答案 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