查找函数

VLOOKUP 函数语法与实战教程

在表格的首列查找值,并返回同一行中指定列的值。

函数语法

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

基础使用示例

=VLOOKUP("Apple", A1:B10, 2, FALSE)

相关推荐函数

VLOOKUP函数完全指南 - 从入门到精通

中级常用度: ⭐⭐⭐⭐⭐查找函数

VLOOKUP是Excel中享负盛名的纵向查找与核对函数。它能够在目标表格的首列快速检索指定键值(如员工工号、商品编码),并跨列提取对应行中的属性值。本指南结合职场高频业务案例,深入拆解精准匹配、模糊查找、避免#N/A报错的核心避坑技巧。

语法详解

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

参数说明

lookup_value[数值/文本/引用]必需

需要在数据表首列中进行查找的目标值(如工号单元格 A2)。

table_array[单元格区域]必需

包含待查数据的信息区域。注意:该区域的首列必须是包含查找值的列(建议加绝对引用如 $A$2:$E$100)。

col_index_num[正整数]必需

希望从 table_array 中返回第几列的值。第1列为 1,第2列为 2,以此类推。

range_lookup[布尔值/0或1]可选

匹配方式。FALSE 或 0 表示精确匹配(推荐99%场景使用);TRUE 或 1 表示近似区间匹配。

实际应用场景

职场实战 1:两张表格按工号批量比对与数据匹配

财务或人事部门经常需要从右侧的总表库中,根据 A 列工号提取对应的员工姓名与部门信息。

示例工作表数据

Sheet1
A B C D E
1 待查工号 待查姓名 总库工号 总库部门 总库薪资
2E1001张小明E1001技术部15000
3E1002李晓红E1002财务部12000
4E1003王大力E1003市场部13500
公式应用
=VLOOKUP(A2, $C$2:$E$4, 2, FALSE)

结果:返回"技术部"(从 C2:E4 区域第 1 列查找工号 A2,提取第 2 列“总库部门”)

职场实战 2:销售订单自动带出商品单价

在录入出库单据时,只需输入商品编码,单价自动自动带出,大幅减少人工输入差错。

示例工作表数据

Sheet1
A B C D E
1 销售编码 品名 价格库编码 价格库品名 价格库单价
2P01无线鼠标P01无线鼠标69.00
3P02机械键盘P02机械键盘299.00
公式应用
=VLOOKUP(A2, $C$2:$E$3, 3, FALSE)

结果:返回 69.00(匹配 A2 编码并在第 3 列获取商品单价)

进阶使用技巧

💡

技巧 1:永远牢记为数据源区域添加绝对引用 ($)

公式编写为 =VLOOKUP(A2, D2:F100, 2, FALSE) 向下拖动填充时,D2:F100 会自动变成 D3:F101、D4:F102,导致查找范围逐步缩小而产生大面积 #N/A。务必按 F4 键将其锁死为 $D$2:$F$100。

示例:=VLOOKUP(A2, $D$2:$F$100, 2, FALSE)
💡

技巧 2:巧妙利用通配符进行模糊包含查找

如果单元格中只包含关键字(如公司全称与简称匹配),可以使用星号 (*) 通配符。

示例:=VLOOKUP("*"&A2&"*", $D$2:$E$100, 2, FALSE)
💡

技巧 3:消除格式不一致导致的假性查找失败

常见痛点是查找列为纯数字(数值型),而目标表首列是文本型数字。可以用 &"" 强制转文本,或 *1 强制转数值。

示例:=VLOOKUP(A2&"", $D$2:$E$100, 2, FALSE)

常见错误与解决方案

❌ #N/A 找不到匹配值报错

最常见的报错。原因主要有三种:1) 目标值确实不存在;2) 查找区域首列不包含查找值;3) 两边单元格存在看不见的多余空格,或数据类型不一致(文本 vs 数值)。

✅ 解决方案

使用 TRIM(A2) 去除空格;使用 IFERROR 屏蔽报错;检查第4个参数是否误填成了 TRUE。

正确写法: =IFERROR(VLOOKUP(TRIM(A2), $D$2:$F$100, 2, 0), "查无此人")

❌ #REF! 引用位置超出范围

第3个参数 col_index_num 超过了第2个参数数据表实际的总列数。例如范围只选了 A:B 两列,第3个参数却写了 3。

✅ 解决方案

重新核对选择的数据区域列数,确保列号索引小于等于所选区域的总列宽。

❌ 匹配结果完全错误或张冠李戴

第4个参数省略未填,或写成了 TRUE。这会触发“近似匹配”,导致 Excel 在未严格升序排序的数据表中返回临近的错误数据。

✅ 解决方案

始终显式写明第4个参数为 0 或 FALSE。

函数组合应用

VLOOKUP + IFERROR:完美容错保护

在查找失败时不显示扎眼的 #N/A,而是显示空白或友好提示。

=IFERROR(VLOOKUP(A2, $D$2:$F$100, 2, FALSE), "未查到")

先执行 VLOOKUP 检索,如果正常匹配则返回结果,若出现任何错误则由 IFERROR 接管并输出 "未查到"。

VLOOKUP + MATCH:动态列号自适应查找

避免因为源数据表中间插入了新列导致固定的列号(如第3列)取错数据。

=VLOOKUP(A2, $D$1:$H$100, MATCH("实发工资", $D$1:$H$1, 0), FALSE)

利用 MATCH 动态扫描表头中"实发工资"所在的位置作为 VLOOKUP 的第3参数,即便调换列序公式依然精准。

练习题

练习 1: 练习 1:跨表提取产品单价

在 A 列填入产品编码,需要从 G1:H20 的价格参考表中查出单价。

给定数据:

当前产品: A2="P105";价格表 G1:G20 为编码,H1:H20 为单价。
问题: 请写出在 B2 单元格中提取该产品单价的完整精确匹配公式。

练习 2: 练习 2:找不到匹配时自动显示为空白

要求在查不到该员工工号时,单元格保持整洁的完全空白,不能显示 #N/A。

问题: 如何结合 IFERROR 优化上面的公式?

学习资源下载

VLOOKUP函数练习模板

包含多个实际案例的Excel模板,帮助您快速掌握函数用法

函数速查卡片

VLOOKUP函数的快速参考卡片,包含语法、参数和常用示例

学习反馈