我有一個數組,包含一堆用於表示該字段正在等待PO的常用術語。然後我有一個循環,通過大量數據列向後走,刪除單元格中的值與數組中任何項不匹配的任何行。要做到這一點,我使用一個函數(我在網上找到)來測試數組中是否存在該值。數組中的通配符搜索
到目前爲止,只要單元格中的值與數組中的值完全匹配,就好了。出錯的地方是如果一個單元格在一個常用術語中含有輕微的變化(即,「TBC-稍後將會」,或者甚至僅僅是「TBC」而不是「TBC」),我就需要一種方法來獲取單元格中的值並對數組中的值執行通配符搜索。我不會粘貼我所有的代碼(現在這是一箇中間開發的混亂),但如果我們可以在下面得到這個工作,我可以應用它。
Sub TestFilterArray()
MyArray = Array("tbc", "awaiting po", "po to follow")
If IsInArray("tbc xyz", MyArray) = False Then
MsgBox "No! Item is not in the array"
Else
MsgBox "Yes! Item is in the array"
End If
End Sub
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = UBound(Filter(arr, stringToBeFound)) > -1
End Function
這個當前返回「不!......」爲「TBC某某」不是數組中存在,但我想它返回「是!...」爲「TBC *」在那裏,如果這就說得通了。
感謝任何幫助。
你要使用部分匹配什麼規則?例如,如果'stringToBeFound'只是'po',應該返回'True'還是'False'?如果要返回「真」,那麼我們考慮「MyArray」中的多詞短語中的哪些詞,以及我們忽略了哪些詞? –
謝謝你跳進來幫忙@RonRosenfeld非常好的一點!理想情況下,stringToBeFound中的整個字符串應該在兩端用通配符進行計算。所以「等待po-xyz」將返回true,但「等待xyz po」將返回false。 –
請參閱我的答案中的代碼 –