gpt4 book ai didi

vba - Excel VBA 中的循环单词匹配函数

转载 作者:行者123 更新时间:2023-12-03 03:01:32 25 4
gpt4 key购买 nike

我有一个关键字列表,想查看一个单元格是否包含这些单词中的任何一个。例如,如果我的关键字列表是(猫、狗、乌龟),则如果该函数正在查找“Mr. Dogs Magic Land”内部,则该函数将返回 MATCH。我在网上找到了一个很好的 UDF 用作该函数,但是当我尝试循环它以测试我的关键字列表中的每个单词时,我得到#VALUE!。第一个函数是我的循环,第二个是在互联网上找到的 UDF 匹配函数(抱歉不记得在哪里,但支持它的制作者。)我尝试过单词匹配函数的变体,例如 InStr,但没有成功。

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

最佳答案

1) 公式

我首先会针对这个特定问题提供非 VBA 解决方案,因为实际上并不需要 VBA。这个数组公式会做同样的事情。按 CTRL-SHIFT-ENTER 输入数组,您将看到公式周围出现大括号 { }。然后就可以复制下来了。

'=IF(OR(ISNUMBER(SEARCH($F$1:$F$3, A1))), "匹配", "不匹配")

2) UDF

使用与您相同的语法,以下是我如何使用 UDF 来解决此问题。

enter image description here

Function MySearch(MyRNG As Range, MyStr As String) As String
Dim cell As Range

For Each cell In MyRNG
If LCase(MyStr) Like LCase("*" & cell & "*") Then
MySearch = "Match"
Exit Function
End If
Next cell

MySearch = "No Match"
End Function

关于vba - Excel VBA 中的循环单词匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9944175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com