【发布时间】:2021-03-03 08:28:36
【问题描述】:
我正在用 excel 开发仪表板。我正在寻找计算行数。 (有多少条记录)..
由于有一些空白单元格,我想从下到上。我使用以下
Range("A1048576").Select
Selection.End(xlUp).Select
执行此操作后,活动单元格位于 A113,这意味着行数为 113。
我的问题是如何从活动单元格中获取这个数字 113?
【问题讨论】:
我正在用 excel 开发仪表板。我正在寻找计算行数。 (有多少条记录)..
由于有一些空白单元格,我想从下到上。我使用以下
Range("A1048576").Select
Selection.End(xlUp).Select
执行此操作后,活动单元格位于 A113,这意味着行数为 113。
我的问题是如何从活动单元格中获取这个数字 113?
【问题讨论】:
你可以用这个:
Dim lastrow as Long
lastrow = Cells(Rows.Count,"A").End(xlUp).Row
lastrow 将包含A 列中最后一个空行的编号,在您的情况下为 113
【讨论】:
这是我通常使用的:
lastrow = WorksheetFunction.CountA(Columns("A:A"))
这将返回“A”列中非空单元格的数量,这就是我认为您所追求的。希望这会有所帮助。
【讨论】:
获取行数/记录数的最佳方法(在大多数情况下)是使用.UsedRange.Rows.Count。您可以将返回值分配给这样的变量:
lastRow = Sheets(1).UsedRange.Rows.Count
如果您使用包含列(如 A 列)的函数,如其他示例中所示,那只会得到该列中的行数,这可能是也可能不是您想要的。一个警告:如果您在最后一行下方使用值格式化了行,那么它将返回该行号。
【讨论】:
如果工作表的最后一行不为空的可能性很小,您应该在@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
【讨论】: