使用Excel VBA检查值是否在数组中

我在下面有一些代码,应该是检查一个值是否在一个数组或不。

Sub test() vars1 = Array("Examples") vars2 = Array("Example") If IsInArray(Range("A1").Value, vars1) Then x = 1 End If If IsInArray(Range("A1").Value, vars2) Then x = 1 End If End Sub Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function 

如果由于某些原因,单元格A1包含单词Examples ,则两个数组IsInArray都会将其检测为存在于两个数组中,而只能find它存在于vars1数组中

我需要改变什么来使我的IsInArray函数,使其完全匹配?

你可以像这样蛮力:

 Public Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean Dim i For i = LBound(arr) To UBound(arr) If arr(i) = stringToBeFound Then IsInArray = True Exit Function End If Next i IsInArray = False End Function 

使用像

 IsInArray("example", Array("example", "someother text", "more things", "and another")) 

这个问题在这里被问到: VBA数组 – 检查严格(不近似)匹配

 Sub test() vars1 = Array("Examples") vars2 = Array("Example") If IsInArray(Range("A1").value, vars1) Then x = 1 End If If IsInArray(Range("A1").value, vars2) Then x = 1 End If End Sub Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = Not IsError(Application.Match(stringToBeFound, arr, 0)) End Function 

你想检查是否存在范围(“A1”)。值如果失败,然后检查示例权? 我认为mycode将工作完美。 请检查。

 Sub test() Dim string1 As String, string2 As String string1 = "Examples" string2 = "Example" If InStr(1, Range("A1").Value, string1) > 0 Then x = 1 ElseIf InStr(1, Range("A1").Value, string2) > 0 Then x = 2 End If 

结束小组

在Excel VBA中使用Match()函数来检查数组是否存在。

 Sub test() Dim x As Long vars1 = Array("Abc", "Xyz", "Examples") vars2 = Array("Def", "IJK", "MNO") If IsNumeric(Application.Match(Range("A1").Value, vars1, 0)) Then x = 1 ElseIf IsNumeric(Application.Match(Range("A1").Value, vars2, 0)) Then x = 1 End If MsgBox x End Sub