如何在EXCEL VBA中获取行数

时间:2014-02-04 13:37:24

标签: excel-vba vba excel

我正在开发excel中的仪表板。我正在寻找计算行数。 (存在多少条记录)..

由于有一些空白单元格,我认为是自下而上。我使用以下

   Range("A1048576").Select
Selection.End(xlUp).Select

执行此操作后,活动单元格位于A113,这表示行计数为113.

我的问题是如何从活动单元格中获取此数字113?

4 个答案:

答案 0 :(得分:4)

您可以使用:

Dim lastrow as Long
lastrow = Cells(Rows.Count,"A").End(xlUp).Row

lastrow将包含A列中的最后一个空行数,在您的情况下为113

答案 1 :(得分:1)

以下是我通常使用的内容:

lastrow = WorksheetFunction.CountA(Columns("A:A"))

这将返回列“A”中非空单元格的数量,这是我认为您所追求的。希望这会有所帮助。

答案 2 :(得分:1)

获取行/记录数(在大多数情况下)的最佳方法是使用 .UsedRange.Rows.Count。您可以将返回值分配给这样的变量:

lastRow = Sheets(1).UsedRange.Rows.Count

如果您使用包含列(例如 A 列)的函数,如其他示例所示,则只会获得该列中的行数,这可能是您想要的,也可能不是。一个警告:如果您在最后一行下方设置了带有值的行的格式,那么它将返回该行号。

答案 3 :(得分:0)

如果工作表的最后一行不是空的可能性很小,您应该在@simoco的解决方案中添加IsEmpty()项检查。因此;以下是一个函数,它返回上次使用的行并检查工作表的最后一行是否为空:

Function lastRow(WS As Worksheet, iColumn As String) As Long

    If Not IsEmpty(WS.Range(iColumn & WS.Rows.Count)) Then
        lastRow = WS.Rows.Count
    Else
        lastRow = WS.Range(iColumn & WS.Rows.Count).End(xlUp).Row
    End If

End Function