vba宏中的if错误和vlookup

vba宏中的if错误和vlookup,vba,excel,formula,vlookup,Vba,Excel,Formula,Vlookup,我的任务是编写一个公式,其中包括if、iferror和Vlookup 我需要应用公式,直到最后一行包含值的末尾 如果vlookup抛出NA,则单元格应为空,否则该值应替换为数值“1” 但当尝试公式,但它是错误的 Sub testt() Dim l As Long l = Sheets(1).Range("A1:A" & Sheets(1).Cells(Sheets(1).Rows.Count, "A").End(xlUp).Row).Count With Sheets("Sh

我的任务是编写一个公式,其中包括if、iferror和Vlookup

我需要应用公式,直到最后一行包含值的末尾

如果vlookup抛出NA,则单元格应为空,否则该值应替换为数值“1”

但当尝试公式,但它是错误的

Sub testt()

Dim l As Long

l = Sheets(1).Range("A1:A" & Sheets(1).Cells(Sheets(1).Rows.Count, "A").End(xlUp).Row).Count
    With Sheets("Sheet1")
        .Range("d1").Formula = "=IF(iferror(vlookup(c2,$D:$D,1,false),""),"",1)"
        .Range("d1").AutoFill Destination:=Range("d1:d" & l), Type:=xlFillDefault

    End With

End Sub

我的第一个想法。。。在VBA中,您应该在公式中使用两个“for every”

另外,是否要使用iSeries

我将替换以下公式

.Range("d1").Formula = "=IF(iserror(vlookup(c2,$D:$D,1,false)),"""",1)"

否则,请让我们知道您得到了什么错误。

我认为问题在于公式的IF部分,特别是逻辑测试。对于电子表格IF函数,公式为:

=IF(logical_test, value_if_true, value_if_false)
逻辑测试是(从Excel帮助文件)任何可计算为TRUE或FALSE的值或表达式。例如,A10=100是一个逻辑表达式;如果单元格A10中的值等于100,则表达式的计算结果为TRUE。否则,表达式的计算结果为FALSE

您的逻辑测试很简单:

iferror(vlookup(c2,$D:$D,1,false),"")
也许应该是:

iferror(vlookup(c2,$D:$D,1,false),"") = ""
给出公式(还有“国王的建议”):


从你的例子中,很少有不合理的事情。首先,最后一行的计算使用同一公式中的图纸(3)和图纸(1),然后将图纸(“图纸3”)与结果一起使用。此外,公式中的“IF”语句没有条件值。您应该先在电子表格中试用您的公式。@CuberChase:我更改了公式。希望现在你能理解它不是显示错误,但是我没有在一些单元格中得到空白,一些单元格“1”没有替换这个值。
"=IF(iferror(vlookup(c2,$D:$D,1,false),"""")="","",1)"