如果在vba宏中出现错误和vlookup

时间:2012-12-29 00:19:41

标签: vba excel-vba formula vlookup excel

我的任务是编写一个包含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

2 个答案:

答案 0 :(得分:0)

我的第一个念头......在VBA中你应该在你的公式中使用两个“for every”......

另外,您要使用IsError吗?

我会替换下面的公式

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

否则,请告诉我们,您收到了什么错误。

答案 1 :(得分:0)

我认为问题出在公式的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),"") = ""

给出公式(同样是'国王的建议):

"=IF(iferror(vlookup(c2,$D:$D,1,false),"""")="","",1)"