在 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 公式
- 单击要显示结果的单元格。
- 输入
=VLOOKUP(,Excel 会提示四个参数。 - 单击包含查找值的单元格(如产品编号),然后输入逗号。
- 选择要搜索的数据区域,查找值必须位于其第一列,再输入逗号。
- 输入要返回的列序号(从所选区域最左列开始数,第一列为 1),再输入逗号。
- 输入
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 中输入下面这张小表:
| 行 | A | B | C |
|---|---|---|---|
| 1 | 产品编号 | 产品 | 价格 |
| 2 | P-101 | 笔记本 | 4.50 |
| 3 | P-102 | 台灯 | 18.00 |
| 4 | P-103 | USB 数据线 | 7.25 |
| 5 | P-104 | 订书机 | 9.99 |
| 6 | P-105 | 白板 | 32.00 |
- 在 E2 中输入
P-103,这是要查找的编号。 - 在 F2 中输入
=VLOOKUP(E2,A2:C6,3,FALSE)并按回车。 - F2 显示 7.25:Excel 在 A 列找到 P-103,并返回区域第 3 列(价格)的值。
- 把 3 改成 2,公式变为
=VLOOKUP(E2,A2:C6,2,FALSE),F2 显示 USB 数据线。 - 在 E2 中换一个编号,如
P-105,结果会自动更新。
如何把 VLOOKUP 向下复制
向下复制公式时,Excel 会自动调整单元格引用,数据区域也会跟着下移,导致下面的行找不到数据。因此要先锁定区域:
- 单击公式所在单元格,在编辑栏中单击数据区域部分。
- 按 F4,区域变为绝对引用,如
$A$2:$C$6。也可以手动输入美元符号。 - 按回车,公式应为
=VLOOKUP(E2,$A$2:$C$6,3,FALSE)。 - 拖动单元格右下角的填充柄向下复制。E2 会依次变为 E3、E4……而数据区域保持不变。
用「函数参数」对话框代替手动输入
如果更习惯填写带标签的输入框,Windows 版 Excel 提供了引导对话框:
- 单击要显示结果的单元格。
- 点击编辑栏上的「插入函数」(fx 按钮),Excel 会自动添加等号。
- 在「搜索函数」框中输入
VLOOKUP,点击「转到」,在列表中选择 VLOOKUP 后点击「确定」。 - 在「函数参数」对话框中填写 Lookup_value、Table_array、Col_index_num 和 Range_lookup 四项,最后一项填
FALSE。 - 点击「确定」,完整公式会出现在单元格中。
Mac 版和网页版 Excel 中此工具的布局不同,但直接输入公式的方式在所有版本中都一样。
近似匹配:查成绩等级或税率档位
近似匹配适用于数值区间,如成绩等级、税率档位、运费阶梯或提成比例。Excel 会在第一列中找到小于或等于查找值的最大值。
在新工作表的 A1:B6 中输入下表,每行是该等级的最低分:
| 行 | A | B |
|---|---|---|
| 1 | 最低分 | 等级 |
| 2 | 0 | F |
| 3 | 60 | D |
| 4 | 70 | C |
| 5 | 80 | B |
| 6 | 90 | A |
- 列出每个区间的最低值:最低值放在第一列,对应结果放在旁边。
- 第一列按从小到大排序:未排序时近似匹配会给出错误结果。
- 输入要查的分数:在 D2 中输入
84。 - 输入带 TRUE 的公式:在 E2 中输入
=VLOOKUP(D2,$A$2:$B$6,2,TRUE)并按回车。 - 检查结果:E2 显示 B,因为 80 是不超过 84 的最大最低分。

用同一张表,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 内容开头的产品。
通配符查找只返回第一个匹配项,因此模式要写得足够具体,只对应一行。
跨工作表或跨工作簿查找
同一工作簿中的其他工作表
- 输入
=VLOOKUP(,单击查找值单元格,输入逗号。 - 单击存放数据表的工作表标签。
- 选择数据区域,按 F4 锁定。
- 输入逗号、列序号、逗号、
FALSE和右括号,按回车。
Excel 会在区域前加上工作表名和感叹号,如 =VLOOKUP(A2,Prices!$A$2:$C$6,3,FALSE)。如果工作表名包含空格或其他非字母字符,需要用英文单引号括起来,如 =VLOOKUP(A2,'Client Details'!A:F,3,FALSE)。
其他工作簿
- 同时打开两个工作簿。
- 在要显示结果的工作簿中输入
=VLOOKUP(,单击查找值单元格,输入逗号。 - 切换到另一个工作簿,单击所需工作表并选择数据区域,Excel 会自动将其设为绝对引用。
- 输入逗号、列序号、逗号、
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 时,按顺序检查:
- 确认查找列在第一列:值必须位于所选区域的最左列。
- 确认区域覆盖了该行:如果区域范围不够或复制时发生了偏移,用 F4 锁定。
- 去除多余空格:使用
=VLOOKUP(TRIM(E2),$A$2:$C$6,3,FALSE),或用 TRIM 清理表中的列。 - 统一数据类型:以文本存储的数字不会与真正的数字匹配,请把其中一方转换成同一类型。
- 为缺失值显示提示:用 IFNA 包裹公式,如
=IFNA(VLOOKUP(E2,$A$2:$C$6,3,FALSE),"未找到")。

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 的列序号是手动输入的数字,在表中插入一列后它就会指向错误的列;另外两种方法使用的区域会随数据一起移动。
按共同编号合并两份数据
要把第二份数据中的匹配列拉到第一份数据中:
- 选定一个共同键(如产品编号),并确认每个编号在源数据中只出现一次。
- 在主数据的第一个空列中,写一个指向源区域的精确匹配 VLOOKUP(源区域可以在其他工作表或工作簿,方法见上文),并用 F4 锁定区域。
- 向下复制公式,再抽查几行与源数据核对。
- 检查所有 #N/A 结果,这些编号在源数据中不存在。核对完成前请保留原始文件。
在 Google 表格中使用 VLOOKUP
Google 表格使用相同的公式,其文档将参数称为 search_key(搜索关键字)、range(范围)、index(索引)和 is_sorted(已排序)。用一份简短的员工名单试试:
- 在新表格的 A1 中输入 ID、B1 中输入姓名;在 A2:A4 中输入 101、102、103,在 B2:B4 中输入 Ana、Ben、Cara。
- 在 D2 中输入 102。
- 单击 E2,输入
=VLOOKUP(D2,$A$2:$B$4,2,FALSE)并按回车,E2 显示 Ben。 - 要查更多编号,在 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 怎么合并单元格。