Vba 如果w/VLOOKUP直到最后一行

Vba 如果w/VLOOKUP直到最后一行,vba,if-statement,foreach,vlookup,Vba,If Statement,Foreach,Vlookup,我使用此脚本的目标是使用公式VLOOKUP从另一个名为“BonDeReception”(也是一列)的工作表“BonDeCommande”(一列)中搜索单元格 如果它在表数组中找到对应的值,它必须在lookup_值的同一行(BonDeCommande上的一列)的J列写入“Oui” 脚本: Sub Macro1() Dim Search As Variant Dim i As Range Dim j As Range LastRow = Worksheets("BC").

我使用此脚本的目标是使用公式VLOOKUP从另一个名为“BonDeReception”(也是一列)的工作表“BonDeCommande”(一列)中搜索单元格

如果它在表数组中找到对应的值,它必须在lookup_值的同一行(BonDeCommande上的一列)的J列写入“Oui”

脚本:

Sub Macro1()


Dim Search As Variant

Dim i As Range
Dim j As Range

LastRow = Worksheets("BC").Range("A" & Rows.Count).End(xlUp).Row
LastR = Worksheets("BR").Range("A" & Rows.Count).End(xlUp).Row
    
For Each i In Range("A2:A" & LastRow)
    For Each j In Range("A2:A" & LastR)
    Range("J2").Select
    Search = Application.VLookup(BC.Range("A2:A" & "i"), BR.Range("A2:A" & "j"), 1, False)


    If Search = "A" & "i" Then
       Result = "OUI"

    Else
        Result = "NON"
        Range("J" & "i").Value = Result
    
    End If
    Next j
Next i

End Sub
但是,代码不起作用,我收到一条运行时错误424消息,其中突出显示了这一行:

Search = Application.VLookup(BC.Range("A2:A" & "i"), BR.Range("A2:A" & "j"), 1, False)
你能告诉我我在代码上做错了什么吗?或者有没有更简单的方法


提前谢谢

您将范围视为数字,也不需要第二个循环:

Sub Macro1()


    Dim Search As Variant
    
    Dim i As Range
    
    Dim LastRow As Long
    LastRow = Worksheets("BonDeCommande").Range("A" & Rows.Count).End(xlUp).Row
    
        
    For Each i In Worksheets("BonDeCommande").Range("A2:A" & LastRow)
        Search = Application.VLookup(i.Value, Worksheets("BonDeReception").Range("A:A"), 1, False)
        If Not IsError(Search) Then
            Result = "OUI"
        Else
            Result = "NON"
        End If
        i.Offset(,9).Value = Result
    Next i

End Sub
但这一切都可以通过一个公式来实现:

=IF(ISNUMBER(MATCH(A2,BonDeReception!A:A,0)),"OUI","NON")

但是
i
j
也是范围,您希望它们是数字。那么,我必须将其改为Variant吗?我这样做了,我收到了相同的错误消息。也尝试作为整数,但对于每个控制变量必须是Variant或object,您需要确定是要查找一个数字还是一个范围,然后在使用上保持一致。它成功了!谢谢你,你真的救了我的命哈哈