我有一个关键字列表,并希望查看一个单元是否包含这些单词中的任何一个。例如,如果我的关键字列表是(猫,狗,海龟),该功能将返回匹配,如果它正在看“狗先生魔术土地”。我发现了一个很好的UDF在线用作函数,但是当我尝试循环它时,它会测试关键字列表中的每个单词,我会得到#VALUE !.第一个函数是我的循环,第二个函数是在因特网上找到的UDF匹配函数(对不起,不记得在哪里,但是支持谁的支持)。我尝试过InStr等单词匹配函数的变体。Excel中的循环词匹配功能VBA
Function StringFind(rng(), source)
For I = LBound(rng) To UBound(rng)
StringFind = MyMatch(rng(I), source)
If StringFind = "MATCH" Then Exit Function
Next I
StringFind = "NO MATCH"
End Function
Function MyMatch(FindText As String, WithinText As Variant) As String
'
Dim vntFind As Variant
Dim vntWithin As Variant
For Each vntFind In Split(UCase(FindText), " ")
If Len(Trim(vntFind)) > 0 Then
For Each vntWithin In Split(UCase(WithinText), " ")
If Len(Trim(vntWithin)) > 0 Then
If vntFind = vntWithin Then
MyMatch = "MATCH"
Exit Function
End If
End If
Next
End If
Next
MyMatch = "NO MATCH"
End Function
是的,我意识到它退出循环后,我不需要stringfind =“不匹配”的一部分,但它是一个想法... – postelrich 2012-03-30 13:45:50