Excel VBA教程:获取Excel有数据单元格最后一行的几种方法
from Excel VBA教程:获取Excel有数据单元格最后一行的几种方法 (baidu.com)
欢迎加QQ群交流
当我们Excel数据表的数据行数不固定的情况,我们如何知道在Excel中的数据到底有多少行?我想这个问题肯定有很多人特别想知道,因为在我们VBA案例中,经常会用得到最后行号,下面就和大家分享几种方法:
1.使用For循环方法
'定义num储存行号的变量,i循环变量
Dim num, i
'将Excel最大行号赋值给变量
num = Rows.Count
'开始循环并判断,找出最后有值的单元格
For i = 1 To num
If Range("a" & num) <> "" Then
Exit For
End If
num = num - 1
Next
'输出num,也就是得到的行号
MsgBox num
执行后可以正确得到最后数据行行号
不足点:
数据行很少的情况下,循环起来好慢。
2.使用.UsedRange方法
'定义一个储存行号的变量
Dim num
'使用UsedRange获取的行号赋值给num
num = ActiveSheet.UsedRange.Rows.Count
'输出num,也就是得到的行号
MsgBox num
代码执行后可以获取到最后一行行号
不足点:
单元格存在有格式的单元格,就会算上带有格式的单元格,得到的行号就会有问题
3.使用Range().End(xlDown)方法
'定义一个储存行号的变量
Dim num
'使用Range("").End(xlDown)获取的行号赋值给num
num = ActiveSheet.Range("a1").End(xlDown).Row
'输出num,也就是得到的行号
MsgBox num
代码执行后可以获取最后一行行号
不足点:
如何列数据中有空白行,就得出错误的行号
如果最后的数据行被隐藏,也会得到错误行号
4.使用Range().End(xlUp)方法
'定义一个储存行号的变量
Dim num
'使用Range("").End(xlUp)获取的行号赋值给num
num = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row
'输出num,也就是得到的行号
MsgBox num
代码执行后可以获得最后一行数据行号
不足点:
如果整个表格的最后行有数据,就会得到错误行号
如果最后的数据行被隐藏,也会得到错误行号
5.使用Cells.SpecialCells方法
'定义一个储存行号的变量
Dim num
'使用Cells.SpecialCells获取的行号赋值给num
num = Cells.SpecialCells(xlCellTypeLastCell).Row
'输出num,也就是得到的行号
MsgBox num
执行后可以正确获取最后数据行号
不足点:
如果存在有格式的空单元格,就会获取错误行号
6.使用Cells.Find方法
'定义一个储存行号的变量
Dim num
'使用Cells.Find获取的行号赋值给num
num = Cells.Find(what:="*", after:=Range("a1"), searchorder:=xlRows, searchdirection:=xlPrevious).Row
'输出num,也就是得到的行号
MsgBox num
执行后可以正确得到数据行最后一行行号
不足点:
如果数据最后一行被筛选了,会得到错误的行号
好了,关于如何获取Excel数据表单元格最后一行的方法就介绍这些!