IFERROR或在VBA中跳过#NA&#39

时间:2016-06-07 17:19:48

标签: excel vba excel-vba

所以我在下面有这个代码,但我想留下任何出现的单元格 "#N / A"作为空白值。

Range("R2").Select
ActiveCell.FormulaR1C1 = _
    "=INDEX(Detail!C[-17]:C[-17],MATCH(C[-16]&""D&O"",Detail!C[-14]:C[-14],0),1)"
Range("R2").AutoFill Destination:=Range("R2:R" & lastrow)

我知道当我直接在单元格中输入= IFERROR(INDEX(详情!A:A,MATCH)(B:B&" D& O",Detail!D)时,我可以解决这个问题。 :D,0),1),""),但是我想让它通过VBA自动填充整个列,如果我在VBA中使用IFERROR,我会得到一个运行时错误&#39 ; 1004':应用程序定义或对象定义的错误。

有关如何更新我的代码以将#NA&#39填充为空白单元格的任何想法?

2 个答案:

答案 0 :(得分:3)

首先,通过将其更改为:

,可以大大简化这一过程
Range("R2:R" & lastrow).FormulaR1C1 = _ 
"=IFERROR(INDEX(Detail!C[-17]:C[-17],MATCH(C[-16]&""D&O"",Detail!C[-14]:C[-14],0),1),"""")"

无需。选择然后.AutoFill到您的范围。此外,从您的问题的正文,看起来你没有双引双引号(4连续双引号)。

这对我来说很好。

答案 1 :(得分:0)

您也可以尝试:

ActiveCell.FormulaR1C1 = "=IFERROR(INDEX(Detail!C[-17]:C[-17],MATCH(C[-16]&""D&O"",Detail!C[-14]:C[-14],0),1),""Error"")"