VLOOKUP 函数怎么用?Excel 与 Google 表格查找公式详解及常见错误解决

VLOOKUP 函数使用教程:语法与四个参数含义、精确匹配完整示例、锁定区域向下复制、近似匹配查等级、通配符模糊查找、跨工作表和工作簿查找、#N/A 等错误修复,以及与 XLOOKUP、INDEX+MATCH 的对比和 Google 表格用法。

在 Excel 中使用 VLOOKUP:输入 =VLOOKUP(查找值, 数据区域, 列序号, FALSE) 后按回车。例如 =VLOOKUP(E2,A2:C20,3,FALSE) 会在 A 列中查找 E2 的值,并返回同一行第 3 列的值。精确匹配请使用 FALSE。本文适用于 Windows 和 Mac 版 Microsoft 365 Excel、Excel 2024/2021/2019/2016。

语法、错误原因和技巧来自 Microsoft 的 VLOOKUP 函数说明页面。Google 表格使用相同的公式和参数,文末单独介绍。

使用前的准备

  • 数据按列排列:VLOOKUP 是在一列中向下查找。如果数据按行横向排列,请使用 HLOOKUP。
  • 查找值位于区域的第一列:Microsoft 规定,要查找的值必须在所选区域的第一列,返回的结果必须在它右侧的列中。
  • 数据类型一致:如果第一列中的数字或日期是以文本形式存储的,VLOOKUP 可能返回错误或意外的值。
  • 数据干净:值前后多余的空格会导致精确匹配失败。

如何编写 VLOOKUP 公式

  1. 单击要显示结果的单元格。
  2. 输入 =VLOOKUP(,Excel 会提示四个参数。
  3. 单击包含查找值的单元格(如产品编号),然后输入逗号。
  4. 选择要搜索的数据区域,查找值必须位于其第一列,再输入逗号。
  5. 输入要返回的列序号(从所选区域最左列开始数,第一列为 1),再输入逗号。
  6. 输入 FALSE 表示精确匹配,加上右括号后按回车,单元格即显示匹配的值。

四个参数分别是什么意思

完整语法为 =VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])。

  • lookup_value(查找值):要查找的内容,可以是单元格引用如 E2、数字,或用英文引号括起的文本如 "P-103"。
  • table_array(数据表):要搜索的区域,必须同时包含查找列和结果所在的列。
  • col_index_num(列序数):结果位于该区域中的第几列,最左列为 1。注意它不是工作表的列字母。
  • range_lookup(匹配条件):FALSE(或 0)为精确匹配;TRUE(或 1)或省略为近似匹配,并假定第一列已排序。

省略最后一个参数是最常见的错误。默认是近似匹配,因此除非要按区间查找,否则一定要写 FALSE。

完整示例:按产品编号查价格

在空白工作表的 A1:C6 中输入下面这张小表:

行ABC
1产品编号产品价格
2P-101笔记本4.50
3P-102台灯18.00
4P-103USB 数据线7.25
5P-104订书机9.99
6P-105白板32.00
  1. 在 E2 中输入 P-103,这是要查找的编号。
  2. 在 F2 中输入 =VLOOKUP(E2,A2:C6,3,FALSE) 并按回车。
  3. F2 显示 7.25:Excel 在 A 列找到 P-103,并返回区域第 3 列(价格)的值。
  4. 把 3 改成 2,公式变为 =VLOOKUP(E2,A2:C6,2,FALSE),F2 显示 USB 数据线。
  5. 在 E2 中换一个编号,如 P-105,结果会自动更新。

如何把 VLOOKUP 向下复制

向下复制公式时,Excel 会自动调整单元格引用,数据区域也会跟着下移,导致下面的行找不到数据。因此要先锁定区域:

  1. 单击公式所在单元格,在编辑栏中单击数据区域部分。
  2. 按 F4,区域变为绝对引用,如 $A$2:$C$6。也可以手动输入美元符号。
  3. 按回车,公式应为 =VLOOKUP(E2,$A$2:$C$6,3,FALSE)。
  4. 拖动单元格右下角的填充柄向下复制。E2 会依次变为 E3、E4……而数据区域保持不变。

用「函数参数」对话框代替手动输入

如果更习惯填写带标签的输入框,Windows 版 Excel 提供了引导对话框:

  1. 单击要显示结果的单元格。
  2. 点击编辑栏上的「插入函数」(fx 按钮),Excel 会自动添加等号。
  3. 在「搜索函数」框中输入 VLOOKUP,点击「转到」,在列表中选择 VLOOKUP 后点击「确定」。
  4. 在「函数参数」对话框中填写 Lookup_value、Table_array、Col_index_num 和 Range_lookup 四项,最后一项填 FALSE。
  5. 点击「确定」,完整公式会出现在单元格中。

Mac 版和网页版 Excel 中此工具的布局不同,但直接输入公式的方式在所有版本中都一样。

近似匹配:查成绩等级或税率档位

近似匹配适用于数值区间,如成绩等级、税率档位、运费阶梯或提成比例。Excel 会在第一列中找到小于或等于查找值的最大值。

在新工作表的 A1:B6 中输入下表,每行是该等级的最低分:

行AB
1最低分等级
20F
360D
470C
580B
690A
  1. 列出每个区间的最低值:最低值放在第一列,对应结果放在旁边。
  2. 第一列按从小到大排序:未排序时近似匹配会给出错误结果。
  3. 输入要查的分数:在 D2 中输入 84。
  4. 输入带 TRUE 的公式:在 E2 中输入 =VLOOKUP(D2,$A$2:$B$6,2,TRUE) 并按回车。
  5. 检查结果:E2 显示 B,因为 80 是不超过 84 的最大最低分。
VLOOKUP 近似匹配查等级步骤:列出各区间最低值、第一列升序排序、输入分数、输入带 TRUE 的公式、检查结果
用 VLOOKUP 近似匹配查找成绩等级或税率档位

用同一张表,59 分返回 F,90 分返回 A。低于 0 的分数返回 #N/A,因为它比第一列中的最小值还小。税率表同理:第一列放每档的起征收入,第二列放税率。

通配符:按部分名称查找

Microsoft 说明,当最后一个参数为 FALSE 且查找值为文本时,可以在查找值中使用通配符:

  • 星号(*)匹配任意数量的字符。
  • 问号(?)匹配一个字符。
  • 波浪号(~)放在问号或星号前,表示查找该字符本身。

以下示例使用前面的产品表。由于搜索的是“产品”列,区域从 B 列开始:

  • 以…开头:=VLOOKUP("台*",B2:C6,2,FALSE) 返回 18,即台灯的价格。
  • 包含:=VLOOKUP("*数据线*",B2:C6,2,FALSE) 返回 7.25。
  • 一个未知字符:=VLOOKUP("P-10?",A2:C6,2,FALSE) 返回“笔记本”。五个编号都符合该模式,VLOOKUP 返回找到的第一个。
  • 引用单元格中的文本:=VLOOKUP(E2&"*",B2:C6,2,FALSE) 查找以 E2 内容开头的产品。

通配符查找只返回第一个匹配项,因此模式要写得足够具体,只对应一行。

跨工作表或跨工作簿查找

同一工作簿中的其他工作表

  1. 输入 =VLOOKUP(,单击查找值单元格,输入逗号。
  2. 单击存放数据表的工作表标签。
  3. 选择数据区域,按 F4 锁定。
  4. 输入逗号、列序号、逗号、FALSE 和右括号,按回车。

Excel 会在区域前加上工作表名和感叹号,如 =VLOOKUP(A2,Prices!$A$2:$C$6,3,FALSE)。如果工作表名包含空格或其他非字母字符,需要用英文单引号括起来,如 =VLOOKUP(A2,'Client Details'!A:F,3,FALSE)。

其他工作簿

  1. 同时打开两个工作簿。
  2. 在要显示结果的工作簿中输入 =VLOOKUP(,单击查找值单元格,输入逗号。
  3. 切换到另一个工作簿,单击所需工作表并选择数据区域,Excel 会自动将其设为绝对引用。
  4. 输入逗号、列序号、逗号、FALSE 和右括号,按回车,Excel 会跳回第一个工作簿。

源工作簿打开时,公式形如 =VLOOKUP(A2,[Prices.xlsx]Sheet1!$A$2:$C$6,3,FALSE)。关闭后,Excel 会补上完整路径,如 =VLOOKUP(A2,'C:\Reports\[Prices.xlsx]Sheet1'!$A$2:$C$6,3,FALSE)。移动或重命名源文件后链接会失效,需要把公式重新指向新位置。

VLOOKUP 常见错误及解决方法

  • #N/A:使用 FALSE 时,没有找到完全相同的值;使用 TRUE 时,查找值小于第一列中的最小值。
  • #REF!:列序号大于区域的列数,三列的区域无法返回第 4 列。
  • #VALUE!:列序号小于 1。
  • #NAME?:公式中的文本缺少引号,或函数名拼错。应写 "P-103" 而不是 P-103。
  • #SPILL!:把整列用作查找值,如 =VLOOKUP(A:A,A:C,2,FALSE)。请改为引用单个单元格,或加上 @ 符号:=VLOOKUP(@A:A,A:C,2,FALSE)。
  • 结果错误:省略了 FALSE,而第一列又没有排序。
  • 第一行正确、下面的行出错:复制公式前没有锁定数据区域,请加上美元符号。

逐步排查 #N/A 错误

明明表中能看到这个值,却仍返回 #N/A 时,按顺序检查:

  1. 确认查找列在第一列:值必须位于所选区域的最左列。
  2. 确认区域覆盖了该行:如果区域范围不够或复制时发生了偏移,用 F4 锁定。
  3. 去除多余空格:使用 =VLOOKUP(TRIM(E2),$A$2:$C$6,3,FALSE),或用 TRIM 清理表中的列。
  4. 统一数据类型:以文本存储的数字不会与真正的数字匹配,请把其中一方转换成同一类型。
  5. 为缺失值显示提示:用 IFNA 包裹公式,如 =IFNA(VLOOKUP(E2,$A$2:$C$6,3,FALSE),"未找到")。
VLOOKUP #N/A 错误排查步骤:确认查找列在第一列、区域覆盖该行、去除空格、统一数据类型、用 IFNA 显示提示
逐步排查 VLOOKUP 的 #N/A 错误

IFNA 只隐藏 #N/A,其他错误仍会显示以便修复。请在公式确认无误后再加 IFNA,而不是一开始就加。

VLOOKUP、XLOOKUP 与 INDEX+MATCH 对比

三者都能在产品表中按 E2 的编号查出价格,对 P-103 都返回 7.25。

函数公式能向左查找?默认匹配适用版本
VLOOKUP=VLOOKUP(E2,A2:C6,3,FALSE)否近似本文涉及的所有版本
XLOOKUP=XLOOKUP(E2,A2:A6,C2:C6,"未找到")是精确Microsoft 365、Excel 2021 和 2024;Excel 2016、2019 不支持
INDEX+MATCH=INDEX(C2:C6,MATCH(E2,A2:A6,0))是由 MATCH 中的 0 决定本文涉及的所有版本
  • XLOOKUP 分别指定查找区域和返回区域,无需数列序号,还内置“未找到”提示。Microsoft 将其描述为可向任意方向查找的 VLOOKUP 改进版。
  • INDEX+MATCH 在所有版本中都能完成同样的工作:MATCH 找到行号,INDEX 返回该行的值。Microsoft 建议在查找值不在第一列时使用。
  • VLOOKUP 在本文涉及的所有 Excel 版本中都可用。文件需要在 Excel 2016 或 2019 中打开、且查找列在左侧时,可以选它。

要向左查找,例如查“订书机”的编号,可用 =XLOOKUP("订书机",B2:B6,A2:A6) 或 =INDEX(A2:A6,MATCH("订书机",B2:B6,0)),两者都返回 P-104。

另一个差异在表格结构变化时很关键:VLOOKUP 的列序号是手动输入的数字,在表中插入一列后它就会指向错误的列;另外两种方法使用的区域会随数据一起移动。

按共同编号合并两份数据

要把第二份数据中的匹配列拉到第一份数据中:

  1. 选定一个共同键(如产品编号),并确认每个编号在源数据中只出现一次。
  2. 在主数据的第一个空列中,写一个指向源区域的精确匹配 VLOOKUP(源区域可以在其他工作表或工作簿,方法见上文),并用 F4 锁定区域。
  3. 向下复制公式,再抽查几行与源数据核对。
  4. 检查所有 #N/A 结果,这些编号在源数据中不存在。核对完成前请保留原始文件。

在 Google 表格中使用 VLOOKUP

Google 表格使用相同的公式,其文档将参数称为 search_key(搜索关键字)、range(范围)、index(索引)和 is_sorted(已排序)。用一份简短的员工名单试试:

  1. 在新表格的 A1 中输入 ID、B1 中输入姓名;在 A2:A4 中输入 101、102、103,在 B2:B4 中输入 Ana、Ben、Cara。
  2. 在 D2 中输入 102。
  3. 单击 E2,输入 =VLOOKUP(D2,$A$2:$B$4,2,FALSE) 并按回车,E2 显示 Ben。
  4. 要查更多编号,在 D3 及以下输入,然后把 E2 右下角的填充柄向下拖动,锁定的区域 $A$2:$B$4 保持不变。

查精确编号时请用 FALSE。TRUE 或省略最后一个参数为近似匹配,要求第一列按 A 到 Z 排序。与 Excel 一样,Google 表格只返回第一个匹配行,#N/A 表示没有找到匹配。用 IFNA 隐藏错误前,先检查多余空格和以文本存储的数字。

如果修改查找值后 Google 表格的结果没有更新,请检查表格的计算设置。

常见问题(FAQ)

应该改用 XLOOKUP 吗?

如果你的 Excel 版本支持,Microsoft 推荐使用 XLOOKUP,它可以向任意方向查找,且默认精确匹配。Excel 2016 和 Excel 2019 不支持 XLOOKUP,如果有人要用这些版本打开文件,请使用 VLOOKUP 或 INDEX+MATCH。

VLOOKUP 能向左查找吗?

不能,它只返回查找列右侧的值。请使用 XLOOKUP 或 INDEX+MATCH,或调整列顺序让查找列排在最前面。

VLOOKUP 能查找其他工作表吗?

可以,加上工作表名即可,如 =VLOOKUP(A2,'Client Details'!A:F,3,FALSE)。在工作表名前用方括号写上文件名,还可以查找其他工作簿。

查找值出现多次会怎样?

VLOOKUP 返回从上往下找到的第一个匹配项,忽略其余的。如果重复是错误数据,请先在 Excel 中删除重复项再查找。

VLOOKUP 区分大小写吗?

不区分,大写和小写字母视为相同,p-103 和 P-103 都能匹配。

VLOOKUP 中 TRUE 和 FALSE 有什么区别?

FALSE 只查找完全匹配的值,找不到时返回 #N/A。TRUE 查找不大于查找值的最接近值,要求第一列按升序排序。省略该参数等同于 TRUE。

如何防止别人输入不存在的编号?

让他们从列表中选择而不是手动输入。可以在 Excel 中通过「数据验证」创建下拉列表,以查找表的第一列作为来源,这样每个选项都能找到匹配。

下一步

按示例建好产品表,输入 =VLOOKUP(E2,$A$2:$C$6,3,FALSE),多换几次 E2 中的编号。确认无误后,再换成你自己的区域和列序号,并加上 IFNA 处理表中不存在的值。

相关阅读:Excel 怎么合并单元格。