
VLOOKUP函数的操作实例:从基础查找开始一步步演示
在 Excel 或 Google Sheets 中,VLOOKUP 常用于根据一个已知值,从表格中查找对应信息。例如,输入商品编号后返回商品名称和单价,或者输入员工编号后查出所在部门。它的优点是写法直观、兼容性较好;局限也很明确:只能在查找区域的最左列查找,再从右侧列返回结果。
本文从一份可直接复制的数据开始,逐步演示 VLOOKUP 的基础用法、精确匹配、近似匹配、错误处理和常见问题,并说明它不适合解决哪些需求。
一、VLOOKUP 适合什么场景
VLOOKUP 适用于“用一列中的某个值定位一行,再从该行取回其他列信息”的查找任务。典型例子包括:
- 根据商品编码查商品名称、分类或价格;
- 根据员工编号查部门、岗位等信息;
- 根据客户编号查客户等级;
- 根据分数所在区间查询等级或对应标准。
如果需要根据条件返回左侧列、根据多个条件共同查找、返回多行结果,或处理重复记录,VLOOKUP 往往不是最方便的选择。新版 Excel 可考虑 XLOOKUP;也可以组合 INDEX 和 MATCH,或使用筛选、查询类工具。选择哪种方法取决于软件版本、数据结构和结果要求。
二、认识 VLOOKUP 的参数
VLOOKUP 的标准语法是:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
不同语言或区域设置的 Excel 可能要求用分号分隔参数,例如 =VLOOKUP(A2;D2:F10;2;FALSE)。如果复制公式后提示公式有问题,可以先检查参数分隔符设置。下面示例使用逗号。
lookup_value:要查找的值,可以是单元格引用,也可以是文本、数字等常量。table_array:包含查找列和返回列的区域。区域最左侧的列必须是查找列。col_index_num:从所选区域最左侧开始计数的返回列序号,第一列是 1,第二列是 2。range_lookup:指定匹配方式。FALSE表示精确匹配;TRUE或省略表示近似匹配。
初学者最容易忽略最后一个参数。省略它并不代表精确匹配,而是采用近似匹配。因此,查编号、编码或姓名时,通常应明确写出 FALSE。
三、准备一份示例数据
在工作表 A1:C5 输入以下数据。可以直接复制制表符分隔的内容,再粘贴到 Excel 或 Google Sheets 中:
商品编码 商品名称 单价
P101 键盘 129
P102 鼠标 59
P103 显示器 899
P104 扩展坞 249
假设在 E1 输入“查询编码”,E2 输入 P103;在 F1 输入“商品名称”,G1 输入“单价”。接下来在 F2 和 G2 分别输入查找公式。
四、实例一:根据编码查商品名称
在 F2 输入:
=VLOOKUP(E2,$A$2:$C$5,2,FALSE)
公式会在区域 A2:C5 的第一列中查找 E2 的值 P103,找到对应行后,返回该区域第 2 列的内容,也就是“显示器”。
这个公式有三个值得注意的地方:
E2是查找值。更改 E2 的编码,公式会重新查找。$A$2:$C$5使用绝对引用。向下复制公式时,查找区域不会跟着移动。2指的是查找区域中的列序号,不是工作表的第 2 列。由于区域从 A 列开始,区域第 2 列对应工作表 B 列。
如果不加美元符号,向下填充公式时,区域可能从 A2:C5 变成 A3:C6,导致查找范围偏移。按 F4 通常可以在相对引用和绝对引用之间切换;不同设备或键盘可能需要组合按键。
五、实例二:同一编码返回单价
在 G2 输入:
=VLOOKUP(E2,$A$2:$C$5,3,FALSE)
这次返回区域第 3 列,即单价。若 E2 是 P103,结果为 899。两个公式的查找区域相同,区别在于列序号分别是 2 和 3。
如果要同时查多个字段,可以分别使用不同的列序号,也可以把一个公式复制到相邻单元格,再按需要调整列序号。列序号是普通数字,复制公式时不会自动变成 2、3、4;想让它自动变化,可以使用 COLUMNS 函数。例如将公式放在 F2 后向右填充:
=VLOOKUP($E2,$A$2:$C$5,COLUMNS($F:F)+1,FALSE)
在 F 列时,COLUMNS($F:F) 的结果为 1,再加 1 得到区域第 2 列;向右复制到 G 列后,结果变成 3。这里的偏移量取决于查找列和公式起始位置,实际使用前应确认列序号没有超出区域宽度。
六、精确匹配和近似匹配
精确匹配:通常用于编号和名称
精确匹配公式的最后一个参数写为 FALSE,也可以写数字 0:
=VLOOKUP(E2,$A$2:$C$5,2,FALSE)
它会寻找与 E2 完全相符的查找值;没有找到时通常返回 #N/A。商品编码、员工编号、订单号和姓名查找,通常都应该使用精确匹配。
近似匹配:用于已排序的数值区间
近似匹配常用于分数分档、佣金比例或税率区间。例如,在 E1:F5 设置分数门槛及等级:
最低分 等级
0 不及格
60 及格
75 良好
90 优秀
如果要根据 E2 中的分数返回等级,可使用:
=VLOOKUP(E2,$E$2:$F$5,2,TRUE)
近似匹配会寻找不大于查找值的最大门槛。因此,分数为 82 时会返回“良好”,分数为 90 时返回“优秀”。近似匹配要求查找区域的第一列按升序排列;如果没有排序或排序错误,结果可能不符合预期。查找值小于第一项时,通常会返回 #N/A。
对于区间表,第一列放的是区间下限。例如“60 分及以上为及格”,表格中应写 60,而不是 59 或区间文本“60—74”。如果业务规则是上限边界,需先把规则转换为适合近似匹配的门槛表,并通过边界样例验证结果。
七、实例三:匹配文本中的通配符
在精确匹配模式下,VLOOKUP 支持通配符搜索:
*表示任意数量的字符;?表示任意单个字符;~用于转义后面的通配符,使其按普通字符处理。
例如,要查找商品名称中以“键”开头的记录,可以将查询值设为 键*,并使用:
=VLOOKUP("键*",$B$2:$C$5,2,FALSE)
该公式在查找区域第一列(B 列)寻找符合模式的文本,并返回第二列单价。若要查找名称中包含实际星号字符的内容,可用波浪号转义,例如查找 A*型号:
=VLOOKUP("A~*型号",$B$2:$C$5,2,FALSE)
通配符只适用于文本查找。它们可能匹配多个记录,而 VLOOKUP 只返回查找区域中最先匹配到的那一行,所以使用通配符前要确认结果是否具有唯一性。
八、实例四:把查找结果中的错误转换为提示
如果 E2 中的编码不存在,精确匹配会返回 #N/A。可以用 IFNA 将“未找到”显示为更易读的提示:
=IFNA(VLOOKUP(E2,$A$2:$C$5,2,FALSE),"未找到商品")
IFNA 只处理 #N/A,适合表达“没有匹配记录”。也可以使用 IFERROR:
=IFERROR(VLOOKUP(E2,$A$2:$C$5,2,FALSE),"查询失败")
IFERROR 会捕获多种错误,不仅是未找到,还包括列序号无效等问题。若把所有错误都替换成同一句提示,可能会掩盖公式本身的配置错误。排查阶段建议先保留错误信息,确认公式正确后,再按需要添加错误处理。
九、实例五:按两项条件查找
VLOOKUP 一次只能使用一个查找值。若需要同时按“部门”和“员工编号”匹配,可以先构造辅助键。例如数据区域中 A 列为部门,B 列为员工编号,C 列为姓名,在 D2 输入:
=A2&"|"&B2
向下填充 D 列。查询时,假设 F2 是部门、G2 是员工编号,则可拼出相同的辅助键:
=VLOOKUP(F2&"|"&G2,$D$2:$E$100,2,FALSE)
这个例子假设 E 列存放要返回的信息,并且 D 列是辅助键。分隔符 | 应选择不会出现在原始字段中的字符,否则不同的字段组合可能拼成同一个键。数据量较大或字段规则复杂时,建议使用明确的组合规则,或改用支持多条件查找的方法。
十、常见错误及排查方法
1. 返回了看起来不相关的记录
首先检查最后一个参数是否写了 FALSE。省略该参数时,函数按近似匹配处理;对于未排序的编码表,这可能产生错误结果,而不一定报错。
2. 返回了错误的列
确认 col_index_num 是相对于 table_array 计数,而不是工作表列号。例如区域为 B2:D20 时,B、C、D 分别是第 1、2、3 列。
3. 公式向下复制后查找范围变化
将固定的数据区域写成绝对引用,例如 $A$2:$C$5。如果使用 Excel 表格,也可以考虑表格结构化引用,以便新增行时让引用范围更容易维护。
4. 明明看起来相同,却提示 #N/A
可能原因包括前后空格、不可见字符、数字与文本格式不同,或全角字符和半角字符不同。比如单元格中的数字 101 与文本 "101" 在某些查找情况下不会被视为相同类型。
可以先用 TRIM 清理普通前后空格,用 CLEAN 清理部分不可打印字符;但这些函数未必能解决所有 Unicode 空格或字符编码差异。也可以在辅助列中统一数据格式,并抽样核对。不要未经确认就将所有值强制转成数字,因为编号中的前导零可能有业务含义。
5. 出现 #REF! 或列序号错误
如果 col_index_num 大于查找区域的列数,可能出现 #REF!。比如区域只有三列,列序号不能写 4。注意修改区域起止列后,旧的列序号也可能不再适用。
6. 插入列后公式返回了其他字段
VLOOKUP 的列序号是数字,插入或重排字段后,公式的返回列含义可能发生变化。维护频繁的表格可采用结构化引用,或考虑 XLOOKUP 这类按返回区域指定结果列的写法。
7. 重复的查找值返回了非预期记录
VLOOKUP 从查找区域中返回第一个匹配项,不会自动汇总重复值,也不会提示存在重复记录。如果需要全部匹配项,应使用筛选、FILTER 等适合返回多行的工具;如果需要唯一记录,应先检查并处理重复数据。
十一、VLOOKUP 的关键边界
- 只能向右返回:查找列必须是所选区域的最左列,返回值来自它右侧的列。需要向左查找时,可调整数据布局,或使用其他查找方案。
- 只能返回区域中的列:列序号从 1 开始,不能超过区域宽度;改动区域时要同步检查列序号。
- 只能返回匹配行的一个结果:重复匹配时返回首个匹配项,不会一次返回全部结果。
- 精确匹配默认不是 FALSE:省略第四个参数会采用近似匹配。查唯一编号时应显式写出
FALSE。 - 近似匹配依赖排序:查找列应按升序排列,并应通过最小值、门槛值及边界值测试。
- 区域引用应稳定:复制公式时,通常需要固定查找区域;数据范围经常变化时要考虑可扩展的引用方式。
- 超长查找文本有兼容性限制:Excel 的 VLOOKUP 对文本型查找值存在 255 个字符的限制;超过该长度时可能无法得到正确结果。处理长文本键时,不应默认 VLOOKUP 一定可靠,应在目标软件版本中验证,或采用其他方案。
此外,VLOOKUP 的结果受单元格数据类型、匹配方式和表格排序影响。不同电子表格软件或版本的具体表现可能有差异;重要业务表格应使用实际数据和边界样例测试,而不是只验证一条普通记录。
十二、安全使用:函数不是权限控制工具
VLOOKUP 只是电子表格中的查找函数,不提供身份验证、授权、加密或访问控制。把某些字段隐藏起来,或用公式决定显示什么,并不能阻止有文件访问权限的人读取底层数据。敏感信息应通过文件权限、受控的数据源、脱敏和最小化共享等措施保护。
把用户输入作为查找值本身,并不会让 VLOOKUP 自动执行任意代码。但需要留意电子表格文件的整体安全:不要随意打开来源不明的工作簿,不要启用未经信任的宏或外部连接;检查工作簿中是否存在外部链接、隐藏工作表和不必要的敏感数据。
如果把用户提供的内容导出为 CSV,再由电子表格软件打开,某些以 =、+、- 或 @ 开头的单元格内容可能被软件解释为公式。这属于 CSV/电子表格公式注入风险,不是 VLOOKUP 的查找机制造成的。系统开发者应按目标软件和导出格式制定安全的文本转义或中和策略,并验证导出文件打开后的实际行为;不能把简单拼接公式或隐藏单元格当作安全措施。
十三、选择 VLOOKUP 还是其他函数
- 数据列顺序固定、只需从右侧返回单个字段,且要兼容较旧版本:VLOOKUP 通常够用。
- 需要向左查找、调整列位置后仍希望公式直观:可考虑 XLOOKUP,前提是目标软件支持。
- 需要兼容较旧版本,且查找和返回列的位置较灵活:可考虑 INDEX 与 MATCH 的组合。
- 需要返回全部符合条件的行:可考虑 FILTER 等支持动态数组的函数,或使用筛选、数据库查询工具。
不要只因为某个函数更新,就把所有旧公式一概替换。更重要的是确认软件兼容性、数据结构、重复值规则和错误处理是否符合实际需要。
十四、练习与检查清单
用前面的商品表完成以下练习:
- 将 E2 改为
P101,确认名称和单价是否随之变化。 - 将 E2 改为不存在的编码,观察精确匹配的错误,再用 IFNA 显示“未找到商品”。
- 把商品编码列的数据类型改成文本或数字后,测试查找结果,并确认编码格式是否一致。
- 复制公式到多个单元格,检查查找区域是否仍固定。
- 在查找表中增加重复编码,确认 VLOOKUP 返回的是哪一条记录,并评估这种行为是否符合业务要求。
正式使用前,可以按下面的顺序检查:查找列是否为区域最左列;查找值与查找列的数据类型是否一致;是否明确指定 FALSE 或 TRUE;返回列序号是否正确;固定区域是否使用绝对引用;重复值和未找到时如何处理;近似匹配表是否按升序排列。
掌握这些规则后,VLOOKUP 可以可靠地完成许多常见的单条件查找任务。最重要的不是记住一个公式,而是理解查找区域如何计列、匹配模式如何工作,以及公式无法替代数据校验和访问控制。









