检查多个单词的字符串(以任何顺序)

时间:2017-06-06 11:49:41

标签: excel excel-vba vba

我尝试使用某些VBA代码来查找 english 6个月是否在单元格中,例如

  

"测试英语,6个月"
  6个月英语

但不是

  

6个月英国人

我只能找到一个单词,在单元格中发现两个单独的字符串

  • 以任何顺序
  • 仅限整个单词

令我困惑。

1 个答案:

答案 0 :(得分:4)

更新 - 防弹

Function StrCheck2(rng1 As Range, str1 As String, str2 As String) As Boolean
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
    .Pattern = "^(?=.*\b" & str1 & "\b)(?=.*\b" & str2 & "\b).*$"
    .ignorecase = True
     StrCheck2 = .test(rng1.Value2)
End With
End Function

你可以做这样的事情

Function StrCheck(rng1 As Range, str1 As String, str2 As String) As Boolean
If InStr(rng1.Value2, str1) > 0 Then
    If InStr(rng1.Value, str2) > 0 Then StrCheck = True
End If
End Function

如果找不到第一个字符串,则将两个IFS分开可以提前退出。

你会称之为 =StrCheck(A1,"English","6 months")

或避免部分单词匹配 = StrCheck(A1," English "," 6 months ") 仍然需要修补一个边缘情况,其中英语可能是第一个单词

Regexp可能是进行防弹检查的最佳步骤。