繁体   English   中英

IF w/ VLOOKUP 直到最后一行

[英]IF w/ VLOOKUP until last row

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

如果它在表数组上找到相应的值,则必须在 lookup_value 的同一行(“BonDeCommande”上的 A 列)的 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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM