VLOOKUP函数:Excel查找函数之王
- 2026-09-22 11:24:30
EXCEL 函数系列教程
VLOOKUP 函数
Excel查找函数之王 . 6大实战场景 . 配操作演示图
大家好,我是红星。说到 Excel 查找函数,VLOOKUP 绝对是最经典、最常用、必须掌握的一个!无论是按姓名查部门、按工号查工资、按产品编号查单价,VLOOKUP 都能轻松搞定。它的核心逻辑很简单:在一个区域的第一列查找某个值,找到后返回同一行中指定列的值。虽然 XLOOKUP 更加新潮强大,但 VLOOKUP 兼容所有 Excel 版本,是职场必备技能。今天我们通过 6 个实战场景,从精确匹配到近似匹配,从基础用法到通配符查找,把 VLOOKUP 彻底搞懂!
📌 语法解析
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])lookup_value(必填):要查找的值,如 "王五" 或 1003
table_array(必填):查找区域,如 A2:C5,查找值必须在第一列
col_index_num(必填):返回第几列的值,如 2 表示返回第2列
range_lookup(可选):FALSE=精确匹配(推荐),TRUE=近似匹配(需排序)
💡 VLOOKUP 的核心逻辑:
1. 在区域的第一列查找——查找值必须在 table_array 的第一列
2. 返回指定列的值——col_index_num 决定返回哪一列(从1开始数)
3. 精确匹配用 FALSE——日常工作中 90% 的情况用 FALSE
4. 近似匹配用 TRUE——适合区间判定(成绩评级、阶梯定价),数据须升序
口诀:找什么、在哪找、返回第几列、精确还是近似
1精确匹配基础用法:按姓名查找部门
VLOOKUP 最常用的场景——精确查找
员工信息表:按姓名查找对应部门,VLOOKUP 最基础的用法
| 行号 | A列 姓名 | B列 部门 | C列 工资 |
|---|---|---|---|
| 1 | 姓名 | 部门 | 工资 |
| 2 | 张三 | 技术部 | 6000 |
| 3 | 李四 | 市场部 | 8000 |
| 4 | 王五 | 财务部 | 7000 |
| 5 | 赵六 | 销售部 | 12000 |
操作步骤:
- 1在 A1:C5 区域输入数据:第1行(A1:C1)为表头(姓名/部门/工资),第2-5行为各员工数据
- 2点击 E2 单元格(任意空白单元格),准备输入查找公式
- 3输入公式:=VLOOKUP("王五", A2:C5, 2, FALSE),按 Enter
- 4E2 显示 财务部——VLOOKUP 在 A 列查找"王五",找到后返回第 2 列(部门)的值
- 5修改查找值测试:改为 =VLOOKUP("赵六", A2:C5, 2, FALSE),结果为 销售部
- 6修改列序号测试:改为 =VLOOKUP("王五", A2:C5, 3, FALSE),结果为 7000(返回第3列工资)

演示:VLOOKUP 精确匹配——在A列查找王五,返回第2列部门。列号A-C(灰色)和行号1-5(灰色)清晰标注,表头行(姓名/部门/工资)蓝色高亮
=VLOOKUP("王五", A2:C5, 2, FALSE)
结果: 财务部💡 这是 VLOOKUP 最经典的用法——四个参数:找什么('王五')、在哪找(A2:C5)、返回第几列(2=部门)、精确匹配(FALSE)。关键注意:查找值必须在 table_array 的第一列,VLOOKUP 只能从左向右查找。FALSE 表示精确匹配——找不到完全一样的值就返回 #N/A。这是日常工作中90% 以上的使用场景。
2近似匹配:成绩等级评定
VLOOKUP 的近似匹配适合区间判定
建立分数线-等级对照表,用 VLOOKUP 近似匹配自动评定成绩等级
| 行号 | A列 分数线 | B列 等级 |
|---|---|---|
| 1 | 分数线 | 等级 |
| 2 | 0 | F |
| 3 | 60 | D |
| 4 | 70 | C |
| 5 | 80 | B |
| 6 | 90 | A |
操作步骤:
- 1在 A1:B7 区域建立等级对照表:A列分数线(0/60/70/80/90),B列等级(F/D/C/B/A),必须升序
- 2在 D2 输入学生分数,例如 85
- 3在 E2 输入公式:=VLOOKUP(D2, A2:B7, 2, TRUE),按 Enter
- 4E2 显示 B——VLOOKUP 用近似匹配在 A 列查找 85,找不到精确值时取小于等于 85 的最大值即 80,返回对应等级 B
- 5测试其他分数:输入 59 得 F,输入 60 得 D,输入 95 得 A
- 6注意:TRUE 表示近似匹配,数据必须升序排列,否则结果不可预期

演示:VLOOKUP 近似匹配——85分对应B等级。列号A-B(灰色)和行号1-7(灰色)清晰标注,表头行(分数线/等级)蓝色高亮
=VLOOKUP(85, A2:B7, 2, TRUE)
结果: B (85介于80-90之间,取80对应B)💡 VLOOKUP 的近似匹配用 TRUE(或省略第4参数)。当查找值 85 在 A 列中找不到精确匹配时,VLOOKUP 会自动找到小于等于 85 的最大值即 80,返回对应的等级 B。关键要求:数据必须按升序排列!否则结果不可预期。这个特性非常适合区间判定场景:成绩评级、佣金阶梯计算、税率查找、折扣率匹配等。对比精确匹配用 FALSE,近似匹配用 TRUE——记住:FALSE 找完全一样的,TRUE 找最接近但不超过的。
3多列查找:改变列序号
同一个查找值,改变第3参数返回不同列的信息
用同一个查找值"王五",改变 col_index_num 返回不同字段
| 行号 | A列 姓名 | B列 部门 | C列 职位 | D列 工资 |
|---|---|---|---|---|
| 1 | 姓名 | 部门 | 职位 | 工资 |
| 2 | 张三 | 技术部 | 工程师 | 6000 |
| 3 | 李四 | 市场部 | 经理 | 8000 |
| 4 | 王五 | 财务部 | 会计 | 7000 |
| 5 | 赵六 | 销售部 | 总监 | 12000 |
操作步骤:
- 1在 A1:D5 区域输入数据:A列姓名、B列部门、C列职位、D列工资
- 2用同一个查找值"王五",改变第3参数(列序号)返回不同信息
- 3列序号=1:=VLOOKUP("王五", A2:D5, 1, FALSE) 返回 王五(第1列姓名)
- 4列序号=2:=VLOOKUP("王五", A2:D5, 2, FALSE) 返回 财务部(第2列部门)
- 5列序号=3:=VLOOKUP("王五", A2:D5, 3, FALSE) 返回 会计(第3列职位)
- 6列序号=4:=VLOOKUP("王五", A2:D5, 4, FALSE) 返回 7000(第4列工资)

演示:VLOOKUP 多列查找——改变列序号返回不同信息。列号A-D(灰色)和行号1-5(灰色)清晰标注,表头行蓝色高亮
=VLOOKUP("王五", A2:D5, 1, FALSE) = 王五 (第1列)
=VLOOKUP("王五", A2:D5, 2, FALSE) = 财务部 (第2列)
=VLOOKUP("王五", A2:D5, 3, FALSE) = 会计 (第3列)
=VLOOKUP("王五", A2:D5, 4, FALSE) = 7000 (第4列)💡 col_index_num 是 VLOOKUP 的第3个参数,决定返回哪一列的值。它的值从1开始——1 表示 table_array 的第一列,2 表示第二列,以此类推。实际应用:同一个查找值,只需改变列序号就能返回不同信息——查部门用 2,查职位用 3,查工资用 4。注意:如果在数据中间插入一列,列序号会发生变化,公式可能返回错误的列——这是 VLOOKUP 的一个已知局限,XLOOKUP 通过直接指定返回区域解决了这个问题。
4IFERROR容错:查找不到时友好提示
VLOOKUP + IFERROR 是黄金搭档
当查找值不存在时,VLOOKUP 返回 #N/A 错误,用 IFERROR 捕获并返回友好提示
| 行号 | A列 姓名 | B列 部门 | C列 工资 |
|---|---|---|---|
| 1 | 姓名 | 部门 | 工资 |
| 2 | 张三 | 技术部 | 6000 |
| 3 | 李四 | 市场部 | 8000 |
| 4 | 王五 | 财务部 | 7000 |
| 5 | 赵六 | 销售部 | 12000 |
操作步骤:
- 1沿用场景一的数据(A1:C5),第1行表头,第2-5行为数据
- 2在 E2 输入普通VLOOKUP:=VLOOKUP("钱七", A2:C5, 2, FALSE)
- 3E2 显示 #N/A——因为"钱七"不在数据中,VLOOKUP 返回错误值
- 4改用IFERROR容错:=IFERROR(VLOOKUP("钱七", A2:C5, 2, FALSE), "未找到")
- 5E2 显示 未找到——IFERROR 捕获 #N/A 错误,返回友好提示
- 6修改查找值测试:改为 =IFERROR(VLOOKUP("王五", A2:C5, 2, FALSE), "未找到"),结果为 财务部

演示:VLOOKUP + IFERROR 容错——查找不到时返回友好提示。列号A-C(灰色)和行号1-5(灰色)清晰标注,表头行蓝色高亮
=VLOOKUP("钱七", A2:C5, 2, FALSE)
结果: #N/A (钱七不在数据中)
加IFERROR容错:
=IFERROR(VLOOKUP("钱七", A2:C5, 2, FALSE), "未找到")
结果: 未找到💡 VLOOKUP + IFERROR 是实际工作中的黄金搭档——VLOOKUP 查找不到时返回 #N/A,IFERROR 捕获这个错误并返回你指定的友好提示。写法:=IFERROR(VLOOKUP(...), '未找到')。为什么要容错:#N/A 错误值在报表中很难看,而且会影响后续计算(SUM 等函数遇到 #N/A 会报错)。加上 IFERROR 后,查找不到时返回空字符串''或'未找到',报表更整洁。注意:IFERROR 会捕获所有错误,如果你只想处理 #N/A,可以用 IFNA 函数。
5通配符查找:模糊匹配
用 * 和 ? 实现模糊查找
用通配符 * 和 ? 实现模糊查找,查找以"苹果"开头的产品
| 行号 | A列 产品编号 | B列 产品名称 | C列 单价 |
|---|---|---|---|
| 1 | 产品编号 | 产品名称 | 单价 |
| 2 | P001 | 苹果手机 | 5999 |
| 3 | P002 | 苹果耳机 | 1299 |
| 4 | P003 | 华为手机 | 4999 |
| 5 | P004 | 华为平板 | 3299 |
操作步骤:
- 1在 A1:C5 区域输入数据:A列产品编号、B列产品名称、C列单价
- 2需求:查找所有"苹果"开头的产品的名称——用通配符 * 实现模糊匹配
- 3在 E2 输入公式:=VLOOKUP("苹果*", A2:C5, 2, FALSE),按 Enter
- 4E2 显示 苹果手机——VLOOKUP 找到第一个以"苹果"开头的产品
- 5修改通配符测试:改为 =VLOOKUP("苹果*", A2:C5, 3, FALSE),返回 5999(单价)
- 6用 ? 匹配单个字符:=VLOOKUP("P00?", A2:C5, 2, FALSE) 返回 苹果手机(P00?匹配P001)

演示:VLOOKUP 通配符查找——苹果*匹配苹果手机。列号A-C(灰色)和行号1-5(灰色)清晰标注,表头行蓝色高亮
=VLOOKUP("苹果*", A2:C5, 2, FALSE)
结果: 苹果手机 (第一个匹配项)
用 ? 匹配单个字符:
=VLOOKUP("P00?", A2:C5, 2, FALSE)
结果: 苹果手机 (P001)💡 VLOOKUP 支持通配符查找——* 匹配任意多个字符,? 匹配单个字符。关键注意:通配符必须配合 FALSE(精确匹配模式)使用,如果用 TRUE 会按近似匹配处理。VLOOKUP 只返回第一个匹配的记录,如果需要返回所有匹配项,需要用 FILTER 函数(365/2021+)。实际应用:按姓氏查找员工、按前缀查找产品编号、按关键词模糊搜索。注意:查找值本身包含 * 或 ? 时,用 ~ 转义,如 ~* 表示查找星号本身。
6VLOOKUP vs XLOOKUP 全面对比
两大查找函数的终极对决
用同样的数据分别测试 VLOOKUP 和 XLOOKUP,全面对比差异
- 1准备同样的数据(A1:D5),分别用 VLOOKUP 和 XLOOKUP 查找王五的工资
- 2VLOOKUP 写法:=VLOOKUP("王五", A2:D5, 4, FALSE)——需数第4列
- 3XLOOKUP 写法:=XLOOKUP("王五", A2:A5, D2:D5)——直接选返回列,无需数列号
- 4VLOOKUP 的局限:不能向左查找、插入列后列号可能错位、需配合IFERROR容错
- 5XLOOKUP 的优势:支持向左查找、内置容错、不受插入列影响
- 6建议:旧版Excel用VLOOKUP,Excel 365/2021+优先用XLOOKUP

演示:VLOOKUP vs XLOOKUP 两大查找函数全面对比
| 对比维度 | VLOOKUP | XLOOKUP |
|---|---|---|
| 匹配方式 | 精确/近似 | 精确/近似/通配符 |
| 向左查找 | 不支持 | 支持 |
| 容错处理 | 需配合IFERROR | 内置if_not_found |
| 返回列 | 需数列号 | 直接选区域 |
| 插入列影响 | 列号可能错位 | 不受影响 |
| 公式长度 | 4个参数 | 3-6个参数 |
| 版本要求 | 所有版本 | 365/2021+ |
💡 VLOOKUP 是 Excel 最经典的查找函数,兼容所有版本,职场必学。它的局限是:只能从左向右查找(查找值必须在第一列)、插入列后列号可能错位、需配合IFERROR容错。XLOOKUP 是微软 2019 年推出的新一代查找函数,解决了 VLOOKUP 的所有局限:支持向左查找、内置容错、不受插入列影响、直接指定返回区域。但 XLOOKUP 仅支持 365/2021+。建议:旧版 Excel 用 VLOOKUP(搭配 IFERROR),Excel 365/2021+ 优先用 XLOOKUP。但 VLOOKUP 仍然是必须掌握的——因为不是所有人的电脑都装了最新版 Excel!
🎯 实用技巧汇总
1. 日常使用 90% 是精确匹配——第4参数用 FALSE 或 0
2. 查找值必须在 table_array 的第一列——VLOOKUP 只能从左向右找
3. col_index_num 从1开始数——1是第一列,不是0
4. 近似匹配(TRUE)数据必须升序——否则结果不可预期
5. 查找不到返回 #N/A——用 IFERROR 容错返回友好提示
6. 通配符 * 匹配多字符,? 匹配单字符,须配合 FALSE
7. 拖拽公式时用绝对引用 $A$2:$C$5 防止区域偏移
8. 插入列后检查 col_index_num 是否需要调整
9. VLOOKUP 只返回第一条匹配记录——找不到多条
📋 查找函数家族速查
| 函数 | 匹配方式 | 独特能力 | 适用场景 |
|---|---|---|---|
| VLOOKUP | 精确/近似 | 兼容性好、最常用 | 纵向精确查找 |
| XLOOKUP | 精确/近似 | 任意方向+容错 | 全能查找(365/2021+) |
| HLOOKUP | 精确/近似 | 横向查找 | 横向报表 |
| LOOKUP | 近似匹配 | 找最后记录(1,0/条件) | 条件查找、区间判定 |
| INDEX+MATCH | 精确匹配 | 任意方向查找 | 灵活组合、旧版替代 |
⚠️ 常见错误与解决方法
| 错误 | 原因 | 解决方法 |
|---|---|---|
| #N/A | 查找值不存在于第一列 | 检查数据或用IFERROR容错 |
| #REF! | col_index_num超出范围 | 检查列序号不超总列数 |
| 返回错误值 | 近似匹配但数据未排序 | 对查找列升序排序 |
| #VALUE! | 参数类型错误 | 检查参数是否正确 |
| 列号错位 | 中间插入/删除了列 | 更新col_index_num或用XLOOKUP |
| 拖拽后区域偏移 | 用了相对引用 | 改用绝对引用: $A$2:$C$5 |
| 通配符不生效 | 用了TRUE近似匹配 | 改为FALSE精确匹配 |
📝 总结
VLOOKUP 是 Excel 中最经典、最常用的查找函数,兼容所有 Excel 版本,是职场必备技能。掌握四个参数:找什么(lookup_value)、在哪找(table_array)、返回第几列(col_index_num)、精确还是近似(range_lookup)。
核心要点:① 精确匹配用 FALSE——日常 90% 的场景,找不到返回 #N/A,搭配 IFERROR 容错;② 近似匹配用 TRUE——适合区间判定(成绩评级、阶梯定价),数据必须升序;③ 通配符 * 和 ?——实现模糊查找,须配合 FALSE;④ 只能从左向右查找——查找值必须在第一列,需要向左查找时用 XLOOKUP 或 INDEX+MATCH。
VLOOKUP 的局限是只能向右查找、插入列后列号可能错位——XLOOKUP 解决了这些问题,但仅支持 365/2021+。在旧版 Excel 中,VLOOKUP 仍是不可替代的查找工具。记住口诀:找什么、在哪找、返回第几列、精确还是近似,VLOOKUP 就再也不会用错!
PowerBI笔记 | Excel 函数系列教程
关注我们,学习更多 Excel 实用技巧