如何在EXCEL VBA中获取行数

5

我正在开发一个Excel仪表板,需要计算行数(即有多少记录)。由于存在一些空单元格,我考虑从底部向上进行计算。我使用以下公式:

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

执行后,活动单元格位于A113,这意味着行数为113。

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

4个回答

6
您可以使用以下内容:
Dim lastrow as Long
lastrow = Cells(Rows.Count,"A").End(xlUp).Row

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


非常感谢Simco :) - Alwyn Miranda
@Dmitry Pavliv 如何将此代码改为计算列数的功能? - BoogieMan2718

3

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

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

如果您使用包含某一列(例如A列)的函数,如其他示例所示,那么这只会得到该列中行数的计数,这可能是您想要的,也可能不是。一个注意点:如果您在具有值的最后一行下面格式化了行,则它将返回该行号。

1
这是我通常用来做那件事的代码:

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

这将返回列"A"中非空单元格的数量,我认为这正是你需要的。希望对你有所帮助。

嗨,吉姆,实际上这对我行不通...例如,如果我删除单元格A12的内容...它会返回112..但我想要最后一行...但真的很感谢你的回复 :) - Alwyn Miranda
1
抱歉,我可能误解了。无论如何,如果您需要这样的函数,它就在那里。保重,祝您的项目好运! - Jim Simson

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接