如何使用VBA查找Excel含公式列中最后一个有实际值的行

问题说明
B列从第2行到第25行全部填充了关联E列的公式,公式逻辑为E列空时返回空文本,你之前使用的End(xlUp)方法仅能判断单元格是否为物理空,只要单元格内存在公式,哪怕返回值是空文本也会被判定为非空,因此会定位到填充了公式的第25行,无法得到正确结果。
解决方案
方法1:逆向遍历查找(适合数据量较小的场景,逻辑简单易调试)
Dim LR As Long, i As Long ' 先获取B列最后一个存在内容(含公式)的行 LR = Cells(Rows.Count, "B").End(xlUp).Row ' 从最后一行往上遍历,找到第一个返回值非空的行 For i = LR To 1 Step -1 If Cells(i, "B").Value <> "" Then LR = i Exit For End If Next i ' 执行完成后LR变量即为目标行号,本示例中返回5
方法2:Find方法查找(适合数据量较大的场景,执行效率更高)
核心是指定LookIn:=xlValues参数,仅按单元格实际显示值查找,自动跳过公式返回的空文本:
Dim LR As Long, findRng As Range With Columns("B") Set findRng = .Find(What:="*", _ LookIn:=xlValues, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious) If Not findRng Is Nothing Then LR = findRng.Row Else ' 可自定义B列无有效值时的返回值 LR = 0 End If End With
内容的提问来源于stack exchange,提问作者Luís Melo
相关产品推荐
相关产品推荐

