使用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