Vba 使用IF语句检查数组中是否包含单元格或范围的值

Vba 使用IF语句检查数组中是否包含单元格或范围的值,vba,excel,Vba,Excel,我有两个数组和一堆数据。数组被设置为范围 Dim Ar1() As Variant, Ar2() As Variant Ar2= Workbooks("workbook2.xlsx").Sheets("Sheet2").Range("A2:A" & LastRow).Value Ar1= Workbooks("workbook2.xlsx").Sheets("Sheet1").Range("A2:A" & LastRow).Value 试图找到像 If workbooks("w

我有两个数组和一堆数据。数组被设置为范围

Dim Ar1() As Variant, Ar2() As Variant
Ar2= Workbooks("workbook2.xlsx").Sheets("Sheet2").Range("A2:A" & LastRow).Value
Ar1= Workbooks("workbook2.xlsx").Sheets("Sheet1").Range("A2:A" & LastRow).Value
试图找到像

If workbooks("workbook1.xlsx").sheets("Sheet1").range("A" & LastRowH).value = Ar1 Then
do an action
Else
do action 2
End If
还有一秒,如果…那么是Ar2。这让我一直在犯数据类型错误。请让我知道,如果有一个方法,我可以做到这一点。 谢谢


编辑:如果我检查一个范围并将操作应用到匹配的范围,那么这将更加有效-谢谢

我认为这就是您要寻找的-如果在数组中找到值,则此UDF将返回
True

Sub Test()

If IsInArray(Workbooks("workbook1.xlsx").Sheets("Sheet1").Range("A" & LastRowH).Value, Ar1) = True Then
    'do something!
Else
    'do something else!
End If

End Sub
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
    IsInArray = Not IsError(Application.Match(stringToBeFound, arr, 0))
End Function

回答我自己的评论,是的,是的。在intertube内部网络wifi google:D上找到此


你可以使用一个UDF来解决这个问题-在这个问题上有几个好的UDF。唯一的警告是,这对OP来说不是问题,但对未来的读者来说可能是,这只适用于一维数组。如果
arr
是一个
范围
而不是
变体
,那么你可以使用
IsInArray=not(arr.Find(What:=stringToBeFound,LookIn:=xlValues,LookAt:=xlWhole)什么都不是)
对于2D范围,上面的内容很好。接下来,是否有方法对数组进行vlookup并求和值,或者每个数据点都需要自己的vlookup?