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