Vba 如果w/VLOOKUP直到最后一行
我使用此脚本的目标是使用公式VLOOKUP从另一个名为“BonDeReception”(也是一列)的工作表“BonDeCommande”(一列)中搜索单元格 如果它在表数组中找到对应的值,它必须在lookup_值的同一行(BonDeCommande上的一列)的J列写入“Oui” 脚本: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").
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,您需要确定是要查找一个数字还是一个范围,然后在使用上保持一致。它成功了!谢谢你,你真的救了我的命哈哈