Excel 2016教程: 更正VLOOKUP中的 #N/A 错误
如何更正 VLOOKUP 函数中的 #N/A 错误
Excel for Office 365 Excel for Office 365 for Mac Excel 2019 Excel 2016 更多...
注意: 我们希望能够尽快以你的语言为你提供最新的帮助内容。 本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗? 请在此处查看本文的 英文版本 以便参考。
本主题介绍最常见的原因的错误的结果在VLOOKUP函数中,并提供有关改为使用INDEX和MATCH建议。
提示: 此外,请参阅课程摘要卡: VLOOKUP 疑难解答提示其提供方便的 PDF 文件中的 #NA 问题的常见原因。您可以与其他人共享 PDF 或打印出来供自己参考。
问题:查阅值不在 table_array 参数的第一列中。
VLOOKUP 的一个约束是可仅查找表数组中最左侧的列的值。如果查阅值不在数组第一列中,您将看到 # n/A 错误。
下表中,我们要检索 Kale 的销售量。
# N/A 错误结果,因为在查阅值"Kale"显示在table_array参数 A2:C10 的第二列 (制作)。这种情况下,Excel 将其在中查找列 A,而不是列 b。
解决方案: 您可以尝试修复此错误通过调整您 VLOOKUP 引用了正确的列。如果不能,然后尝试移动列。也可能是高度不可行,如果您有大型或复杂的电子表格单元格的值在其他计算结果哪里 — 或者可能有其他逻辑为什么您只需不能移动列的原因。解决方案是使用 INDEX 和 MATCH 函数,可以查找而不考虑其位置位置查阅表格中的一列中的值的组合。请参阅下一节。
请考虑改用索引/匹配
INDEX和MATCH是 VLOOKUP 不符合您的需求的许多情况下很好的选项。索引/匹配的主要优势是您可以查找查阅表格中的任意位置中的一列中的值。函数 INDEX 返回从指定的表/区域的值,根据其位置。匹配返回表/区域中的值的相对位置。使用 INDEX 和 MATCH 配合在公式中表格数组中指定的相对位置的值来查找表/数组中的值。
有许多优势,而不 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 的第一个值中的某个位置))
该公式在 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 的值,因此出现错误。
解决方案:
问题:查阅列未按升序排列
如果range_lookup参数设置为 TRUE,和查找列的其中一个未排序升序 (A 到 Z),您将看到 # n/A 错误。
解决方案:
问题:值是较长的浮点数
如果您有时间值或大型十进制数字在单元格,Excel 将返回 # n/A 错误,由于浮动点精度。浮点数是按照小数点后的数字。(Excel 存储时间值为浮点数。)Excel 不能存储具有非常大的浮动点的数字、 浮动指向函数正常工作,以便将需要数字舍入为 5 个小数位数。
解决方案:缩短该数字,使用 ROUND 函数将其四舍五入到五个小数位数。