如果满足IF条件,则执行Vlookup

时间:2018-07-13 11:49:34

标签: vba excel-vba if-statement excel-formula vlookup

如果满足IF条件,我将尝试使用vlookup运行循环。我已经编写了下面提供的代码,但是在第3行中给出了错误,提示类型不匹配。 lastrow和ws1定义正确,因为我设法在没有if条件的情况下运行了此代码。我同时提供了在没有if条件的情况下成功运行的代码和没有运行的代码

代码1(它运行但没有If条件)

With ws1
    .Range("G2:G" & lastrow3).Formula = "=IFERROR(VLOOKUP(C2,'[NOT OK.xlsx]Sheet1'!F:I,4,FALSE),"""")"
    .Range("G2:G" & lastrow3).Value = .Range("G2:G" & lastrow3).Value
End With

代码2(它不运行)

With ws1
    For i = 2 To lastrow3
        If .Cells(i, "E").Value = 0 And .Cells(i, "F").Value = 0 Then
        .Cells(i, "G").Formula = "=IFERROR(VLOOKUP(C2,'[NOT OK.xlsx]Sheet1'!F:I,4,FALSE),"""")"
        End If
    Next i
End With

2 个答案:

答案 0 :(得分:0)

好像我看不懂。

with ws1
    For i = 2 To 6
        If .Cells(i, "E").Value = 0 And .Cells(i, "F").Value = 0 Then
            .Cells(i, "G").Value = "ok"
        End If
    Next i
end with

运行良好并产生。

enter image description here

也可能不需要在VLOOKUP的搜索字符串中使用硬编码的C2

答案 1 :(得分:0)

为什么不只使用IF公式

IF(E2+F2 = 0, VLOOKUP(C2,'[NOT OK.xlsx]Sheet1'!F:I,4,FALSE), "")

Used in VBA like this:

For I = 2 To lastRow
   Range("G" & I).Formula = "=IF(E" & I & "+ F" & I & " = 0, " & Chr(34) & "VLOOKUP(C2,'[NOT OK.xlsx]Sheet1'!F:I,4,FALSE)" & Chr(34) & ", " & Chr(34) & "No" & Chr(34) & ")"
 Next I