Vba 查看不同工作表的IF&vlookup

Vba 查看不同工作表的IF&vlookup,vba,excel,Vba,Excel,我有下面的代码做我需要的工作了。它检查D列以查看值是否大于200,如果大于200,则在sheet2中选择vlookups以获取相应的值。然而,由于循环的原因,我的方法需要相当长的时间来加载。谁能帮我把代码写得更快,或者有不同的方法?谢谢 Private Sub CommandButton1_Click() Dim vlookup As Variant Dim lastRow1 As Long, lastRow2 As Long Dim ws1 As Worksheet,

我有下面的代码做我需要的工作了。它检查D列以查看值是否大于200,如果大于200,则在sheet2中选择vlookups以获取相应的值。然而,由于循环的原因,我的方法需要相当长的时间来加载。谁能帮我把代码写得更快,或者有不同的方法?谢谢

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

把公式放在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

但是我应该如何设置找不到的部分?感谢您在公式的iferrorvlookupa4和ws2.Rangea2:b和lastRow2.Address1,1,external:=True和,2,false和未找到的iferror部分中输入它&我无法成功完成。所以我所做的就是替换代码中从For I=4开始的部分。。。直到下一次,我将使用您提供的代码。我做错了吗?谢谢