2016-11-10 2 views
1

Я хочу сравнить список имен со вторым списком имен с использованием цикла for и vlookup в vba. другими словами, если имя находится в моем списке и во втором списке, я хочу пометить эту запись «контрагент» и все остальные имена как «клиент».vlookup in for lookp with vba

Как только имя в моем списке не во втором списке, код дает ошибку «Ошибка времени выполнения 13», когда я хочу, чтобы имя было классифицировано как клиент.

Sub final_row1() 
Dim i As Integer 
    For i = 2 To 10 
     If Cells(i, 2).Value = Application.VLookup(Cells(i, 2), Range("f2:g8"), 1, False) Then 
      Cells(i, 3).Value = "counterparty" 
     Else 
      Cells(i, 3).Value = "client" 
     End If 
    Next i 
End Sub 

ответ

0
Sub final_row1() 
Dim i As Integer 
Dim notFound As Boolean 

    For i = 2 To 10 
     notFound = Application.IsError(Application.VLookup(Cells(i, 2), Range("F2:G8"), 1, False)) 
     If notFound = False Then 
      Cells(i, 3).Value = "counterparty" 
     Else 
      Cells(i, 3).Value = "client" 
     End If 
    Next i 
End Sub 
0

Попробуйте кусок кода ниже, я использую Application.VLookup для того, чтобы поймать ошибки.

Sub final_row1() 

    Dim i As Integer 

    For i = 2 To 10  
     ' a match found between both lists  
     If Not IsError(Application.VLookup(Cells(i, 2), Range("F2:G8"), 1, False)) Then 
      Cells(i, 3).Value = "counterparty" 
     Else 
      Cells(i, 3).Value = "client" 
     End If 
    Next i 

End Sub