查找第1列仅包含数字的最后一行

时间:2019-11-07 14:37:03

标签: excel vba

我正在使用从“查找工作表的最后一行”:Error in finding last used cell in Excel with VBA的解决方案中找到的这段代码。 如何调整它来回答我的问题? 抱歉,无法解决在此处发布代码的错误。 谢谢。

1 个答案:

答案 0 :(得分:2)

想象一下A:A列中的以下数据:

enter image description here

现在可以循环使用您的列了:

Sub Test()

With Sheet.Range("A:A") 'Change to your own sheets CodeName
    For Each cl In .SpecialCells(xlCellTypeConstants, 1)
        Debug.Print cl.Address
    Next cl
End With

End Sub

由于您说有数字值,因此我们可以将A:A列与SpecialCells进行迭代。使用xlCellTypeConstants仅包含其中包含常量的单元格,然后添加XlSpecialCellsValue枚举(对于数字常量,仅添加xlNumbers1),然后可以进行循环。

它只会迭代包含数值的单元格。因此,您无需尝试查找最后一行,也不需要循环所有单元格并检查值是否为数字。此方法还将允许您使用的范围内的其他文本数据类型值。

enter image description here


如果您必须获取包含数值的最后一行,我们可以稍微更改一下代码以查看Areas集合中的最后一个Area(因为我们可能会有不连续的{ {1}}对象)。现在,获取最后一行可能是:

Range

出于可读性考虑,您可能会发现以下更简单:

Sub Test()

Dim rng As Range
Dim lr As Long

With Sheet1.Range("A:A") 'Change to your own sheets CodeName
    Set rng = .SpecialCells(xlCellTypeConstants, 1)
    lr = rng.Areas(rng.Areas.Count).Cells(rng.Areas(rng.Areas.Count).Count, 1).Row
End With

End Sub

这将无需使用数组公式/函数来检索包含数值的最后一行。

相关问题