如何更正 VLOOKUP 函数中的 #N/A 错误

注意:  我们希望能够尽快以你的语言为你提供最新的帮助内容。 本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗? 请在此处查看本文的 英文版本 以便参考。

本主题介绍最常见的原因的错误的结果在VLOOKUP函数中,并提供有关改为使用INDEXMATCH建议。

提示: 此外,请参阅课程摘要卡: VLOOKUP 疑难解答提示其提供方便的 PDF 文件中的 #NA 问题的常见原因。您可以与其他人共享 PDF 或打印出来供自己参考。

问题:查阅值不在 table_array 参数的第一列中。

VLOOKUP 的一个约束是可仅查找表数组中最左侧的列的值。如果查阅值不在数组第一列中,您将看到 # n/A 错误。

下表中,我们要检索 Kale 的销售量。

Vlookup 中的 #NA 错误:查阅值不在表数组的第一列中

# N/A 错误结果,因为在查阅值"Kale"显示在table_array参数 A2:C10 的第二列 (制作)。这种情况下,Excel 将其在中查找列 A,而不是列 b。

解决方案: 您可以尝试修复此错误通过调整您 VLOOKUP 引用了正确的列。如果不能,然后尝试移动列。也可能是高度不可行,如果您有大型或复杂的电子表格单元格的值在其他计算结果哪里 — 或者可能有其他逻辑为什么您只需不能移动列的原因。解决方案是使用 INDEX 和 MATCH 函数,可以查找而不考虑其位置位置查阅表格中的一列中的值的组合。请参阅下一节。

请考虑改用索引/匹配

INDEXMATCH是 VLOOKUP 不符合您的需求的许多情况下很好的选项。索引/匹配的主要优势是您可以查找查阅表格中的任意位置中的一列中的值。函数 INDEX 返回从指定的表/区域的值,根据其位置。匹配返回表/区域中的值的相对位置。使用 INDEX 和 MATCH 配合在公式中表格数组中指定的相对位置的值来查找表/数组中的值。

有许多优势,而不 VLOOKUP 使用索引/匹配的:

  • 使用 INDEX 和 MATCH,返回的值不需要在同一列中为查阅列。这是不同于 VLOOKUP,其中返回的值有需要在指定的区域。这是否重要?使用 VLOOKUP,您必须知道其中包含返回值的列号。尽管这可能无法在困难,它可以麻烦时您有一个大型表来计算列数。此外,如果您添加/删除列在表格中,您必须重新计算,并更新col_index_num参数。使用 INDEX 和 MATCH,没有计数是必需的查阅列是不同于包含返回值的列。

  • 使用 INDEX 和 MATCH,您可以指定行或列的数组中,或同时指定。这意味着您可以在垂直或水平查找值。

  • INDEX 和 MATCH 可用于在任何列中查找值。与 VLOOKUP 不同,在其中您可以仅查找表中的第一列中的值 — 如果查阅值在第一列,最后一次,或任意位置之间的 INDEX 和 MATCH 正常工作。

  • INDEX 和 MATCH 提供动态引用的列,其中包含返回值的灵活性。这意味着您可以添加列到表中,而不会断开 INDEX 和 MATCH。VLOOKUP 另一方面,如果您需要将一列添加到表分页符,由于它对表格的静态引用。

  • INDEX 和 MATCH 更灵活的匹配项。INDEX 和 MATCH 可以查找精确匹配或大于或小于查阅值的值。VLOOKUP 将仅查找的值 (默认) 或确切的值与最匹配。VLOOKUP 还假定默认情况下,表格数组中的第一列按字母顺序排序,并且 VLOOKUP 假设您的表未设置这种方法,将返回表,可能不适用于您正在寻找的数据中的最接近的第一个匹配。

语法

若要生成索引/匹配的语法,您需要使用数组/引用参数从 INDEX 函数和嵌套在其匹配语法。这需要窗体:

= INDEX(array or reference, MATCH(lookup_value,lookup_array,[match_type])

我们使用索引/匹配替换 VLOOKUP 上面的示例。语法如下所示:

=INDEX(C2:C10,MATCH(B13,B2:B10,0))

用简单的汉语表达其意思:

= 索引 (从 c2: c10,将符合返回的值 (Kale,b2: b10 数组中,在其中返回值是对应于 Kale 的第一个值中的某个位置))

可以使用 INDEX 和 MATCH 函数替代 VLOOKUP

该公式在 C2 至 C10 单元格中查找 Kale( B7 单元格)对应的第一个值,并返回 C7 单元格中的值 (100),即与 Kale 匹配的第一个值。

问题:找不到完全匹配项

range_lookup参数为 FALSE,并且 VLOOKUP 不能在您的数据中查找精确匹配 — 将返回 # n/A 错误。

解决方案: 如果您是确保电子表格中存在相关数据并 VLOOKUP 不捕捉它,需要时间来验证引用的单元格没有隐藏的空格或非打印字符。此外,请确保单元格按照正确的数据类型。例如,包含数字的单元格应作为数字,而不是文本设置格式。

此外,考虑使用清理TRIM函数以清理单元格中的数据。

问题:查阅值小于数组中的最小值

如果range_lookup参数设置为 TRUE,并且在查阅值小于数组中的最小值-您将看到 # n/A 错误。TRUE 看起来近似匹配数组中并返回最接近的值小于查阅值。

在以下示例中,查阅值是 100,但 B2:C10 区域中不存在小于 100 的值,因此出现错误。

查阅值小于数组中的最小值时 VLOOKUP 中会出现 N/A 错误

解决方案

  • 根据需要更改查阅值。

  • 如果您不能更改查阅值,并且需要具有匹配值更大的灵活性,请考虑使用索引/匹配,而不 VLOOKUP,请参阅本文中上面的部分。与索引/匹配项,您可以查找值大于、 更小,或等于查阅值。使用索引/匹配,而不 VLOOKUP 的详细信息,请参阅本主题中的上一节。

问题:查阅列未按升序排列

如果range_lookup参数设置为 TRUE,和查找列的其中一个未排序升序 (A 到 Z),您将看到 # n/A 错误。

解决方案

  • 更改 VLOOKUP 函数来查找精确匹配。若要执行此操作,请range_lookup参数设置为FALSE。无排序是需要为 FALSE。

  • 使用 INDEX/MATCH 函数查找未排序表格中的值。

问题:值是较长的浮点数

如果您有时间值或大型十进制数字在单元格,Excel 将返回 # n/A 错误,由于浮动点精度。浮点数是按照小数点后的数字。(Excel 存储时间值为浮点数。)Excel 不能存储具有非常大的浮动点的数字、 浮动指向函数正常工作,以便将需要数字舍入为 5 个小数位数。

解决方案:缩短该数字,使用 ROUND 函数将其四舍五入到五个小数位数。

你是否有特定函数问题?

在 Excel 社区论坛中发布问题

帮助我们改进 Excel

是否有关于如何改进下一版 Excel 的建议?如果有,请查看 Excel User Voice 上的主题。

另请参阅

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×