检查多个单词的string(以任何顺序)

例如,我正在尝试使用一些VBA代码来查找说英语6个月是否在单元格中

“testing英语,6个月”
6个月英语

但不是

6个月英国人

我只能find一个单词,发现单元格中有两个单独的string

  • 以任何顺序
  • 整个字只

令我困惑。

更新 – 防弹

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 

如果第一个string没有find,分离两个IFS允许提前退出。

你可以这样称呼=StrCheck(A1,"English","6 months")

或避免部分词匹配= StrCheck(A1," English "," 6 months ") ,这仍然需要修补英语可能是第一个字

正则Regexp可能是防弹检查的最佳步骤。