首页 > 解决方案 > IF & vlookup 在不同的工作表中查找

问题描述

我有下面的代码,它也可以完成我需要的工作。它检查 D 列以查看该值是否大于 200,如果是,则在 sheet2 中查找相应的值。但是,由于循环,我的方法需要很长时间才能加载。任何人都可以帮助我更快地编写代码或采用不同的方法吗?谢谢

Private Sub CommandButton1_Click()

    Dim vlookup As Variant
    Dim lastRow1 As Long, lastRow2 As Long
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim i As Long



    Set ws1 = Sheets("Sheet1")
    lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
    Set ws2 = Sheets("Sheet2")
    lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row

    For i = 4 To lastRow1

    If Cells(i, "D") > 200 Then

    With ws1.Range("g4:g" & lastRow1)
        .Formula = "=iferror(vlookup(a4, " & ws2.Range("a2:b" & lastRow2).Address(1, 1, external:=True) & ", 2, false), text(,))"
        .value = .value
    End With

    Else

    Cells(i, "g") = "Not found"

    End If

    Next i

End Sub

标签: vbaexcel

解决方案


将公式放入g4并复制下来

ws1.Range("g4").formula = "=iferror(vlookup(a4, " & ws2.Range("a2:b" & lastRow2).Address(1, 1, external:=True) & ", 2, false), text(,))"
ws1.Range("g4").copy ws1.Range("g4:G" & lastrow1

推荐阅读