【问题标题】:IFERROR or Skipping #NA's in VBAIFERROR 或跳过 VBA 中的 #NA
【发布时间】:2016-10-07 17:13:57
【问题描述】:

所以我在下面有这段代码,但我想留下任何出现的单元格
“#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(Detail!A:A,MATCH(B:B&"D&O",Detail!D:D,0),1) 直接在单元格中输入时可以解决这个问题,""),但我希望它通过 VBA 自动填充整个列,如果我在 VBA 中使用 IFERROR,我会收到运行时错误“1004”:应用程序定义或对象定义错误。

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

【问题讨论】:

  • 在 VBA 中,您是否正确地引用了引号? "=IFERROR(INDEX(Detail!C[-17]:C[-17],MATCH(C[-16]&""D&O"",Detail!C[-14]:C[-14],0),1),"""")" 另外,请确保您有一个名为 Detail 的工作表(在当前工作簿中)。
  • 我刚刚复制并粘贴了您输入的内容,但仍然出现同样的错误。我在当前工作簿中有详细工作表。因此,我应该获得值的所有单元格,我都这样做了,但是当我知道我不应该获得任何值时,我想摆脱其他单元格中的 #N/A 将其留空。
  • 这是一个数组公式吗?

标签: vba excel


【解决方案1】:

首先,这可以通过将其更改为:

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

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

这对我来说效果很好。

【讨论】:

  • 呃,是的。我讨厌它有点像我忽略的东西。非常感谢!问题解决了。
  • 我很高兴这对你有用!非常感谢用户“接受”适合他们的答案,详情请参阅stackoverflow.com/help/accepted-answer
【解决方案2】:

你也可以试试:

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

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多