当 IF 条件指定“ ”时,EXCEL VLOOKUP 返回 #NA

当 IF 条件指定“ ”时,EXCEL VLOOKUP 返回 #NA

=IF(VLOOKUP(D4,'[05.14_Wave 5 优先级 14 (Big+Cranberry) 规格.xlsx]Big'!$B:$B,1,FALSE),"项目 BIG",IF(VLOOKUP(D4,'[05.14_Wave 5 优先级 14 (Big+Cranberry) 规格.xlsx]Cran'!$B:$B,1,FALSE),"项目 Cranberry",IF(VLOOKUP(AH4,'[05.14_Wave 5 优先级 14 (Big+Cranberry) 规格.xlsx]SMP BIG List'!$E:$E,1,FALSE),"项目 BIG(Original)",IF(VLOOKUP(AH4,'[05.14_Wave 5 优先级 14 (Big+Cranberry) 规格.xlsx]SMP BIG列表'!$G:$G,1,FALSE),“项目 BIG(新)”,“”))))

以上是我用来交叉检查其他工作表上的 SKU 的 excel 代码。如果找到 VLOOKUP,我希望 [if_true_value] 说明它在哪个工作表上(即“Project BIG”),如果未找到 VLOOKUP,则 [if_false_value] 运行另一个 VLOOKUP 来搜索另一个工作表。最后的 [if_false_value] 是“”,如果未找到 SKU,我只想得到一个空白单元格。但是我在单元格中得到的是 #N/A。

所以我的问题是:这是使用 VLOOKUP 的有效方法吗?它实际上是通过真/假条件迭代到代码末尾吗?有什么建议可以改进吗?

谢谢你的时间!

答案1

将每个 VLookup 包装在 NOT(ISERROR()) 中以实现您要寻找的结果:

=IF(NOT(ISERROR(VLOOKUP(A1,sheetname!A:A,1,FALSE))),"some statement","another vlookup")

答案2

正如已经建议的那样,您需要检查是否返回结果。由于您只想检查存在性,因此VLOOKUP 函数有点过头了。我建议使用更简单的MATCH 函数检查它是否返回行号(找到)或错误(未找到)。

=IF(ISNUMBER(MATCH(D4, '[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]Big'!$B:$B, 0)), "Project BIG",
    IF(ISNUMBER(MATCH(D4, '[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]Cran'!$B:$B, 0)), "Project Cranberry",
       IF(ISNUMBER(MATCH(AH4, '[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]SMP BIG List'!$E:$E, 0)), "Project BIG(Original)", 
          IF(ISNUMBER(MATCH(AH4, '[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]SMP BIG List'!$G:$G, 0)), "Project BIG(New)",
    ""))))

您可以在公式中保留换行符,以帮助您更好地理解它。

答案3

=IF(ISNA(VLOOKUP($D4,'[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]Big Sku List '!$C:$C,1,FALSE)),
    IF(ISNA(VLOOKUP($D4,'[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]Cranberry Sku List'!$I:$I,1,FALSE)),
    IF(ISNA(VLOOKUP(AH4,'[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]SMP BIG List'!$E:$E,1,FALSE)),
    IF(ISNA(VLOOKUP(AH4,'[05.14_Wave 5 Priority 14 (Big+Cranberry) Specifications.xlsx]SMP BIG List'!$G:$G,1,FALSE)),
    "NO","Project BIG(NEW)"),"Project BIG(Original)"),"Project Cranberry"),"Project BIG")

以上就是我想到的。

ISNA 将检查 VLOOKUP 的值,如果为真 (#N/A),它会在整个链中通过不同的工作表执行另一个 VLOOKUP。然后“False”语句告诉我在哪里找到了 VLOOKUP。手动验证了其中几个,我相信这个解决方案有效。

我感谢大家并希望这对下一个人有帮助!

相关内容