使用通配符搜索

时间:2017-04-19 18:42:12

标签: excel vba excel-vba search wildcard

在以下代码中,shLook是一张工作表,其中包含我希望通过迭代shSource表示的行来搜索工作表rowSt中的字符串的文本项列表。

LPosition = InStr(1, shSource.Cells(rowSt, 18), shLook.Cells(i, 1).Value)

这很有效,但如果shLook中的任何文字包含通配符,它​​就无法在shSource中找到相应的字符串。

是否有其他方法可以实现这一点,以便我可以将通配符放在文本项列表中?

1 个答案:

答案 0 :(得分:0)

如果您只想知道字符串是否存在,可以使用:

Dim found As Boolean
Dim searchString As String
searchString = shLook.Cells(i, 1).Value
If Left(searchString, 1) <> "?" Then searchString = "*" & searchString
If Right(searchString, 1) <> "?" Then searchString = searchString & "*"
found = shSource.Cells(rowSt, 18).Value Like searchString

如果您想知道字符串开始的位置,则需要在执行Instr之前删除通配符:

If Found Then
    LPosition = InStr(shSource.Cells(rowSt, 18), Replace(Replace(searchString, "?", ""), "*", ""))
End If

注意:你不能在没有完成第一部分的情况下完成第二部分,因为在搜索&#34;?ABC&#34;的情况下你会得到一个错误的匹配。在&#34; XYZABCIJK&#34;。