如何在Excel中获取指定单词最后一次出现的行号?
解决方案:获取目标文本最后一次出现的行号
嘿,我看你已经搞定了第一次出现的行号获取,要改成抓最后一次其实只需要调整Find方法的几个参数就行,很简单!
问题根源
你当前用的Find方法默认是从范围顶部开始向下搜索,所以拿到的是第一个匹配项。要获取最后一次出现的记录,我们需要把搜索方向改成从后往前找。
修改后的关键代码
把你原来获取行号的那段代码:
row_no = Worksheets("temp").Range("E2:E10000").Find("End Analysis", lookat:=xlWhole).Row
替换成下面这段带参数调整和错误处理的代码:
Dim findRange As Range ' 从范围的最后一个单元格开始,向前搜索目标文本 Set findRange = Worksheets("temp").Range("E2:E10000").Find( _ What:="End Analysis", _ LookAt:=xlWhole, _ SearchDirection:=xlPrevious, _ After:=Worksheets("temp").Range("E10000") ) ' 检查是否找到目标,避免空引用错误 If Not findRange Is Nothing Then row_no = findRange.Row MsgBox "最后一次出现""End Analysis""的行号是:" & row_no Else MsgBox "未找到目标文本" End If
完整的关键逻辑块
把你代码里的If Result> 1 Then部分替换成下面的完整代码:
If Result > 1 Then ' 获取最后一次出现的行号 Dim findRange As Range Set findRange = Worksheets("temp").Range("E2:E10000").Find( _ What:="End Analysis", _ LookAt:=xlWhole, _ SearchDirection:=xlPrevious, _ After:=Worksheets("temp").Range("E10000") ) If Not findRange Is Nothing Then row_no = findRange.Row MsgBox "最后一次出现""End Analysis""的行号是:" & row_no Else MsgBox "未找到""End Analysis""" End If End If
补充小建议
你代码里的循环For x = 0 To tables.Length其实有点小问题——集合的索引是从0开始到Length-1,改成For x = 0 To tables.Length - 1可以避免超出范围的错误哦。
内容的提问来源于stack exchange,提问作者user9710880
相关产品推荐
相关产品推荐

