[英]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.