You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:39:17