2012-12-29 59 views
0

我的任务写一个公式,其中包括如果IFERROR和VLOOKUP如果错误和VLOOKUP在VBA宏

我需要运用公式,直到最后一排的含有值结束。

如果VLOOKUP抛出NA,则该信元应该是空白的,othewise该值应与数值“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 
+0

很少有你的例子中没有任何意义的东西。对于初学者,您对最后一行的计算使用同一公式中的表格(3)和表格(1),然后使用表格(“表格3”)和结果。另外,公式中的'IF'语句没有条件值。您应该首先在电子表格中尝试您的公式。 – CuberChase

+0

@CuberChase:我改变了公式。希望现在你更好地理解它 – newjenn

回答

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)" 
+0

感谢您的帮助 – newjenn

0

我的第一替换认为...在VBA中,你应该在你的公式中使用两个“for each”...

另外,你是否想要使用IsError。

我将取代公式如下

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

否则,请让我们知道,你做了什么错误。

+0

它不显示错误,但我没有得到一些单元格中的空白区域和一些单元格“1”没有取代值 – newjenn