For i = 1 To .Range("A65536").End(xlUp).Row
j = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
Sub test()
r = Cells(Rows.Count, 1).End(xlUp).Row
arr = Worksheets("sheet1").UsedRange
End Sub
该代码的意思:End(xlUp).Row在Excel VBA中用于返回指定列中最后一个非空单元格的行号。具体来说,End(xlUp).Row
表示从当前单元格向上查找,直到找到第一个非空单元格,并返回该单元格的行号
使用场景和示例
- 确定数据区域的结束行:常用于确定数据区域的结束行,例如在复制或操作数据时,确定最后一个非空单元格的行号。例如,
Range("A65536").End(xlUp).Row
将返回A列最后一个非空单元格的行号12。 - 读取或操作单元格:如果需要进一步操作这个单元格,可以使用
Cells(Rows.Count, 1).End(xlUp)
返回一个Range对象,表示最后一个非空单元格的实际单元格引用。例如,Range("A2", Cells(Rows.Count, 1).End(xlUp))
表示从A2开始复制到A列中最后一个非空单元格2。
代码示例
以下是一个简单的VBA代码示例,演示如何使用End(xlUp).Row
来查找A列最后一个非空单元格的行号:
vbaCopy Code
Sub FindLastRowInColumnA()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
MsgBox "最后一行的行号是: " & lastRow
End Sub
这段代码将显示一个消息框,显示A列最后一个非空单元格的行号
Cells(Rows.Count, 1).End(xlUp).Row 和 Cells(Rows.Count, 1).End(xlUp) 是 VBA 中用于定位 Excel 工作表中单元格的两种不同用法。以下是它们的区别:
1. Cells(Rows.Count, 1).End(xlUp).Row
功能: 这个表达式返回的是一个行号(Long 类型),表示在指定列(此例中为第一列,A列)中最后一个非空单元格的行号。
用法: 通常用于确定数据区域的结束行,例如用于复制或操作数据。
示例: 如果在A列的第10行到第1行有数据,执行此表达式将返回10。
2. Cells(Rows.Count, 1).End(xlUp)
功能: 这个表达式返回的是一个 Range 对象,表示在指定列(A列)中最后一个非空单元格的实际单元格引用。
用法: 可以用于进一步操作这个单元格,例如读取值或格式化单元格。
示例: 如果在A列的第10行到第1行有数据,执行此表达式将返回 Cells(10, 1),即A10这个单元格。
假设 A1 到 A10 有数据,而 A11 及以下单元格为空:
使用 Cells(Rows.Count, 1).End(xlUp).Row 将返回 10。
使用 Cells(Rows.Count, 1).End(xlUp) 将返回 Cells(10, 1),即 A10 的引用。
比如Range("A2", Cells(Rows.Count, 1).End(xlUp)):
就是复制从A2开始一直到A列中最后一个非空单元格,这里的Cells(Rows.Count,1).End(xlUp)就是一个单元格
比如lastRow=Cells(Rows.Count, 1).End(xlUp).Row:
就是获取A列的最后一个非空单元格的行号,通常代码中的表示是最后一行
总结
如果你需要知道最后一个非空单元格的行号,使用 Row 属性。
如果你需要对最后一个非空单元格进行操作,使用 Cells(Rows.Count, 1).End(xlUp)。
For Each rg In Range([a2], Columns(2).End(xlDown))