VBA Vlookup不匹配

时间:2018-03-08 20:20:12

标签: vba vlookup

我在sheet4中有要查找的单元格,查找表在sheet2范围内(" A16:B25")。当我运行此代码时,它给了我mismatch error。为什么要这样做?

Dim i As Integer
Dim lrow As Long
Dim x As Integer

Sheet4.Activate
lrow = Sheet4.Range("A" & Rows.count).End(xlUp).Row

For i = 2 To lrow

    Cells(i, 1).Activate
    x = Application.VLookup(ActiveCell.Offset(0, 0).Value, Worksheets(2).Range("A16:B25"), 2, False)

    If x <> Cells(i, 2).Value Then
        Cells(i, 2).Interior.Color = RGB(255, 0, 0)
    Else
    End If

Next i

1 个答案:

答案 0 :(得分:2)

1:除非绝对必要,否则不需要激活任何东西。使用显式引用(workbook.worksheet.cell或.range) 2:您需要检查vlookup是否返回错误。 3:ActiveCell.Offset(0,0).Value只是活动单元,因为你没有偏移。

尝试将此代码添加到您的代码中,您可能需要根据具体用途进行调整。

sub lookup_color()
Dim i As Integer
Dim lrow As Long
Dim vReturnVal As Variant

lrow = Sheet4.Range("A" & Rows.count).End(xlUp).Row
For i = 2 To lrow
   vReturnVal = Application.VLookup(Sheet4.Cells(i, 1).Value, Worksheets(2).Range("A16:B25"), 2, False)
     If Not IsError(vReturnVal) Then
        If vReturnVa <> Sheet4.Cells(i, 2).Value Then
        Sheet4.Cells(i, 2).Interior.Color = RGB(255, 0, 0)
       End If
    End iF
Next i
End sub