VBA找出一列中最后一个非空单元格
来源:百度知道 编辑:UC知道 时间:2024/05/25 07:06:32
假设你要操作的列号是ColumnNo
那么该列最后一个非空单元格的行号是
Cells(65536, ColumnNo).End(xlUp).Row
有行号列号,搞定。
相当于手选该列最后一格,再按下END+UP 组合键.
因为当中有空行,所以不能用投机方法,所以只能循环65536次
从第一行开始循环,如果非空,则记录下该行地址到任意一个单元格(比如取D2),然后再移到下一行
如果为空,则不记录,直接跳到一行
这样的话那个D2单元格就会不停地被覆盖,最后那个D2的数据就是最后一个非空单元格的地址
这个算法时间很长,期待有更好方法
关于获取VBA最后一个非空值单元格的安全做法
1、比较常用的做法是:Range(“A65536″).End(xlUp).row。
2、这种做法的弊端,就是如果用户隐藏的单元格,或者是做了数据筛选,会出错。
3、正确的做法(考虑2003和2007兼容)如下:
Function GetEndNull() As Integer
Dim RowN As Long
Dim Rng As Range
Set Rng = Sheets(“XXX”).UsedRange
For RowN = Rng(Rng.Count).row To 1 Step -1
If Sheets(“XXX”).Cells(RowN, “A”) <> “” Then Exit For
Next
GetEndNull = RowN
End Function
研究了半天,这个会更安全一些
以A列举例:
Dim maxRow As Long
maxRow = Sheets("Sheet1").[A65535].End(xlUp).Row
以上就是获取的最后一个非空单元格的行号。无论中间有没有空行都不要紧,因为是从65535最大行开始往上找的(xlUp)。