如果您的最终目标是简单地在 A 列中找到完全匹配的值,并返回相应行 B 和 C 列中的值,那么正则表达式是不适合这项工作的工具。使用内置函数,如Match
.
我仍然不明白这个练习的意义,因为数据已经排列在 A、B 和 C 列中,你可以简单地使用 AutoFilter... 这个子例程只是告诉你找到了值(并返回相应的数据)或未找到。
我已经对此进行了测试(对尺寸vals
变量进行了小改动)
Sub Foo()
Dim valToLookFor As String
Dim rngToLookAt As Range
Dim foundRow As Long
Dim vals() As Variant
valToLookFor = "052035"
Set rngToLookAt = Range("A:A")
If Not IsError(Application.Match(valToLookFor, rngToLookAt, False)) Then
foundRow = Application.Match(valToLookFor, rngToLookAt, False)
ReDim vals(1)
vals(0) = rngToLookAt.Cells(foundRow).Offset(0, 1).Value
vals(1) = rngToLookAt.Cells(foundRow).Offset(0, 2).Value
'Alternatively, to return the cell address:
'vals(0) = rngToLookAt.Cells(foundRow).Offset(0,1).Address
'vals(1) = rngToLookAt.Cells(foundRow).Offset(0,2).Address
MsgBox Join(vals, ",")
Else:
Erase vals
MsgBox valToLookFor & " not found!", vbInformation
End If
End Sub
这是它有效的证据: