【问题标题】:Suppress #N/A returned by Google Sheets vlookup抑制由 Google 表格 vlookup 返回的 #N/A
【发布时间】:2016-06-16 16:51:47
【问题描述】:

我有一个 Google 表格 (example),其中包含一个基本的 vlookup 来创建一个汇总列。它为每个未找到的搜索键返回“#N/A”,并将以下错误附加到这些单元格:

错误在 VLOOKUP 评估中未找到值“me@me.com”。

经过大量搜索,我找到的唯一解决方案是将 vlookup 包装在 IF(ISNA()) 中,在 How to link various Google spreadsheets using IMPORTRANGEs that contain VLOOKUP formulas without getting #N/A returned? 中给出。这行得通,但看起来我真的不应该这样做。还有其他方法吗?

【问题讨论】:

  • 我不清楚这里的问题是什么...您想知道是否有其他方法可以在不检查 NA 的情况下执行此操作?
  • @ChrisSteele - 是的,没错。我将进行编辑以实际包含一个?

标签: google-sheets


【解决方案1】:

2019-03-01 更新: 现在最好的解决方案是 =IFNA(VLOOKUP(…), 0)。见this other answer

 

您可以使用以下公式。它将用0 替换VLOOKUP(…) 返回的#N/A 值。

=SUMIF(VLOOKUP(…),"<>#N/A")

它是如何工作的:这使用了SUMIF(),只有一个值可以总结。所以结果是一个值——如果不等于#N/A,根据条件。但是,如果值为#N/A,则总和为零。这就是SUMIF() 的工作原理:如果没有值符合条件,则结果为0,而不是NULL,而不是#N/A

优点:

  • 与问题中引用的解决方案 =IF(ISNA(VLOOKUP(…)),"",VLOOKUP(…)) 相比,此解决方案仅包含一次 VLOOKUP(…) 部分。这使得公式更短更简单,并且避免了只编辑两个VLOOKUP(…) 部分之一时发生的错误。

  • 与来自the other answer 的解决方案=IFERROR(VLOOKUP(…)) 相比,错误不会被抑制,因为这会使检测和调试它们变得更加困难。仅抑制 #N/A 值。

【讨论】:

  • 此解决方案仅适用于数字字段。如果您想传递文本,请按照其他答案使用IFERROR()
【解决方案2】:

=IFNA(VLOOKUP(...), "")

不确定这是否最近发生了变化,但IFNA 实现现在支持VLOOKUP 的单个列表。也就是说,您不必将其包装在另一个 IF 中。

其中一个优点是您可以选择""0NULL 等作为失败时显示的值。

【讨论】:

  • 嗯,我收到“ISNA 的参数数量错误。预期有 1 个参数,但有 2 个参数。”在 Google 表格中进行测试时。只有 MS Excel >2013 似乎有IFNA(…)。这真的适用于您的 Google 表格吗?
  • 感谢您的评论 — 修正了上面的错字,因为这确实是 IFNA。我制作了this sheet 来向自己证明这一点。它确实有效,但它不会在函数列表中列出 IFNA 或在您键入时建议它。也许这是限量发行?
  • 确实有效!很棒的发现,这是现在最好的解决方案。 (只是没有看到 Google 表格手册中列出的 IFNA 并假设您可能在谈论 Excel。)
  • 这太棒了!!我一直希望/等待这个来简化一堆公式!我可以确认它有效!
  • fwiw - "" 的 send 参数对于 IFNA 函数是可选的,如果出现错误,也可以是可选的。
【解决方案3】:

抑制任何类型的错误消息的更简单方法是使用 iferror 包装器:

=iferror(vlookup(A1,Lookup!A:B,2,FALSE))

我认为没有比这更简单的方法了。按照设计,vlookup 不应在未找到密钥时简单地返回空白:这与找到密钥但第二列中的相应条目为空白的情况无法区分。必须抛出一些错误,然后由电子表格用户如何处理。

【讨论】:

  • 感谢这个有用的包装器!关于 vlookup 是有道理的,尽管我认为附加到单元格的错误就足够了。
  • =iferror(vlookup(A1,Lookup!A:B,2,FALSE, "your message")) 将用您的自定义消息替换 #NA。
  • 使用这个公式你仍然会得到空单元格,所以你也应该过滤它们。例如,您可以使用 SORT 操作来做到这一点
【解决方案4】:

只需添加 真的, ”” 到您的参数列表中,如下所示:

IFS(条件1, 值1, 条件2, 值2, TRUE, "")

这是可行的,因为 IFS “返回一个对应于 FIRST 真条件的值。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多