Excel vlookup函数零基础入门
你好,我是悦创。
为私教学员编写教程:


VLOOKUP 是 Excel 中非常常用的查找函数,用来纵向查找某个值,并返回同一行中其他列的数据。它的名字也来自于这个功能:Vertical Lookup(纵向查找)。
1. 基础教程
1.1 VLOOKUP 函数语法

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])各参数解释如下:
| 参数 | 含义 | 示例 |
|---|---|---|
lookup_value | 要查找的值(通常是某个单元格) | A2 |
table_array | 查找的数据区域(必须包含查找列) | Sheet2!A:D |
col_index_num | 要返回的列号(从左到右,第 1 列为 1) | 3 |
[range_lookup] | 可选。TRUE 表示近似匹配,FALSE 表示精确匹配(推荐用 FALSE) | FALSE |
语法结构拆解
1. 基础拆解
Sheet2!A:D- Sheet2:工作表名称(也可能是“员工数据”、“数据源”等你自己的表名)
- !:表示“引用该工作表中的单元格区域”
- A:D:表示从 A 列到 D 列的所有单元格(行数不限)
👉 翻译成自然语言就是:「引用 Sheet2 工作表里从 A 列到 D 列的整个区域」。
或者这么说:
Sheet2!A:D= “引用 Sheet2 工作表中的 A 到 D 列的全部数据”。
2. 实际用法举例
如果我们有一个公式:
=VLOOKUP(A2, Sheet2!A:D, 3, FALSE)它的含义是:
A2:要查找的值(查找关键字)Sheet2!A:D:查找的表格范围在Sheet2工作表里,从 A 列到 D 列- A 列必须是查找值所在的第一列。
- B、C、D 列可以作为返回列。
3:返回该区域中第 3 列的值(也就是 C 列的值)FALSE:表示精确匹配
所以公式含义是:去 Sheet2 的 A-D 列里,用 A2 的值在 A 列里查找,并返回对应行的 C 列数据。
📊 举例说明:
| A(编号) | B(姓名) | C(部门) | D(工资) |
|---|---|---|---|
| 1001 | 张三 | 技术部 | 15000 |
| 1002 | 李四 | 市场部 | 12000 |
如果 A2 中的编号是 1002,公式:
=VLOOKUP(A2, Sheet2!A:D, 3, FALSE)✅ 结果就是:市场部(因为第 3 列是部门)。
3. 小技巧与注意事项
如果写成
Sheet2!$A$2:$D$100,就是更精确的范围(不会包含整个空列,更高效)。如果写成
Sheet2!A:D,更方便,不用管数据扩展,但会包含整列。表名里有空格 时,要加引号:
='员工 数据'!A:D引用整列(如
A:D)的好处:数据增多时无需修改范围。如果只想引用部分区域,比如 A1:D100,就可以写成:
Sheet2!A1:D100;
✅ 总结:
| 表达式 | 含义 |
|---|---|
Sheet2!A:D | Sheet2 工作表中 A~D 整列 |
Sheet2!A1:D100 | Sheet2 工作表中 A1~D100 区域 |
'员工数据'!A:D | 名称含空格时用引号包起来 |
1.2 基本示例
假设你有一张表:
| A(编号) | B(姓名) | C(成绩) |
|---|---|---|
| 1001 | 张三 | 85 |
| 1002 | 李四 | 90 |
| 1003 | 王五 | 78 |
你想通过编号查找学生姓名,可以这样写:
=VLOOKUP(1002, A:C, 2, FALSE)👉 解释:
1002是要查找的值(编号)A:C是查找区域2表示返回区域中第 2 列(姓名列)FALSE表示精确查找
✅ 结果:李四
1.3 常见用法技巧
1.3.1 用单元格引用代替固定值
如果编号在 A2 中:
=VLOOKUP(A2, A:C, 3, FALSE)👉 根据 A2 的编号返回对应的成绩。
1.3.2 近似匹配(分数→等级)
如果 [range_lookup] 设置为 TRUE 或省略,会执行“近似查找”:
| F(分数下限) | G(等级) | C(分数) |
|---|---|---|
| 0 | 不及格 | 55 |
| 60 | 及格 | 72 |
| 80 | 良好 | 88 |
| 90 | 优秀 | 93 |
=VLOOKUP(C2, F:G, 2, TRUE)解释一下每个参数:
| 参数 | 含义 |
|---|---|
C2 | 要查找的分数(例如 72) |
F:G | 查找范围(等级表) |
2 | 返回第 2 列(等级列) |
TRUE | 启用“近似查找”模式 |
匹配过程详解
以 C2=72 为例,Excel 查找过程是这样的:
- 看表格第一行:0 ≤ 72 ✅,继续往下
- 第二行:60 ≤ 72 ✅,继续往下
- 第三行:80 ≤ 72 ❌,停在上一行
- 上一行是
60→ 等级是 “及格”
👉 结果返回 及格
再看几个例子:
| 分数 (C2) | 匹配步骤 | 匹配结果 |
|---|---|---|
| 55 | 0 ≤ 55 ✅,60 ≤ 55 ❌ → 停在 0 行 | 不及格 |
| 72 | 0 ≤ 72 ✅,60 ≤ 72 ✅,80 ≤ 72 ❌ | 及格 |
| 88 | 0 ≤ 88 ✅,60 ≤ 88 ✅,80 ≤ 88 ✅,90 ≤ 88 ❌ | 良好 |
| 93 | 0 ≤ 93 ✅,60 ≤ 93 ✅,80 ≤ 93 ✅,90 ≤ 93 ✅ | 优秀 |
⚠️ 必须注意的两个“坑”
⚠️ 1. 查找列 必须升序排序
近似查找要求F 列(分数下限)从小到大排列。否则 Excel 会匹配错误。
✅ 正确(升序):
| 0 | 不及格 |
|---|---|
| 60 | 及格 |
| 80 | 良好 |
| 90 | 优秀 |
❌ 错误(乱序):
| 80 | 良好 |
|---|---|
| 0 | 不及格 |
| 90 | 优秀 |
| 60 | 及格 |
这种情况会返回错误的等级!
⚠️ 2. 查找值必须「落在范围内」
- 如果查找值 小于最小值(比如 -5),就会返回
#N/A错误。 - 如果查找值 大于最大值(比如 120),则返回最后一行的结果(这里是“优秀”)。
✅ 小技巧:你可以提前用 IFERROR() 包裹防止报错:=IFERROR(VLOOKUP(C2, F:G, 2, TRUE), "无效分数")
总结:近似查找的 3 个核心要点
| 要点 | 说明 |
|---|---|
| ✅ 匹配规则 | 找到“小于或等于查找值的最大值” |
| ✅ 排序要求 | 查找列必须升序排序 |
| ✅ 典型场景 | 等级、价格区间、年龄段、折扣档位、税率计算等 |
📌 小结一句话记忆:
TRUE:找不到就选“最接近但不超过”的那个值(前提:必须升序!)
💡 额外小技巧:这种“区间查找”不仅可以用在分数→等级,还可以用在工资→税率、价格→折扣、年龄→阶段、成绩→绩点 等等各种“区间映射”的场景,非常实用!
👉 会自动匹配最接近的分数等级。
在查找列中找到 小于或等于查找值的最大值,然后返回这一行对应的结果。
换句话说,不要求查找值完全匹配,而是找**“最接近但不超过”**的那一行。
⚠️ 注意:近似查找时,查找列必须按升序排序!
1.3.3 用 $ 锁定区域(复制时不变)
=VLOOKUP(A2, $A$2:$C$100, 3, FALSE)👉 加上 $ 后,复制公式时查找区域不会变。
1.3.4 解决“列号不固定”的问题(配合 MATCH)
如果查找列可能变化,可以这样写:
=VLOOKUP(A2, A:D, MATCH("成绩", A1:D1, 0), FALSE)👉 自动查找“成绩”所在的列号,避免手动数列。
列号怎么数?
重点:列号不是 Excel 的列序号,而是查找区域中的相对列序号!
比如区域是 A:D:
| 区域列 | 相对列号 | 字段 |
|---|---|---|
| A | 1 | 编号 |
| B | 2 | 姓名 |
| C | 3 | 部门 |
| D | 4 | 工资 |
所以:
col_index_num = 2👉 返回 姓名col_index_num = 3👉 返回 部门col_index_num = 4👉 返回 工资
⚠️ 注意:如果你写成 5,就会报错 #REF!,因为超出了区域最大列数(A:D 是 4 列)。
实战技巧
改列数时不用重写公式:用
MATCH动态列号这是进阶用法,非常实用:
=VLOOKUP(B2, A:D, MATCH("工资", A1:D1, 0), FALSE)这里
MATCH("工资", A1:D1, 0)会自动返回“工资”在第几列(比如是 4),这样即使列顺序调整,公式也不会出错。记住“查找列必须是区域的第1列”
VLOOKUP的查找值必须出现在查找区域的最左边一列,否则找不到。比如如果你写:
=VLOOKUP(15000, B:D, 3, FALSE)❌ 是错误的,因为“15000”在 D 列,而查找列(B 列)不是查找目标。
避免“列数数错”的小技巧
列太多时数列号容易搞混,这时可以用:
- 选择区域从查找列开始,第一列就是 1;
- 或者直接用
MATCH动态定位列号(推荐)。
小结
| 内容 | 说明 |
|---|---|
col_index_num | 返回第几列的值(相对查找区域) |
| 从 1 开始数 | 第一列 = 查找列,第二列 = 下一列… |
| 超出列数 | 报错 #REF! |
| 推荐技巧 | 用 MATCH 自动查找列号,防止表格结构变化时出错 |
📌 记忆口诀:「1 是查找列,2 是下一列,别数错!」
1.3.5 range_lookup
我们接下来讲的 [range_lookup](第 4 个参数)是 VLOOKUP 中最被忽视但非常关键的参数,很多人出错都是因为它!理解了它,你就算是 VLOOKUP 的“高手”了💪。
1. 参数语法回顾
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])最后这个参数 [range_lookup] 有两种取值:
| 参数值 | 查找方式 | 说明 |
|---|---|---|
FALSE | 精确匹配 | 查找 完全相等 的值 |
TRUE 或省略 | 近似匹配 | 查找 小于或等于 查找值的“最接近”的值(要求查找列升序排序) |
2. 精确匹配(FALSE) —— 最常用、最安全!
👉 意思是:“只有当查找值完全相等时才返回结果。”
示例:
| A(编号) | B(姓名) |
|---|---|
| 1001 | 张三 |
| 1002 | 李四 |
| 1003 | 王五 |
公式:
=VLOOKUP(1002, A:B, 2, FALSE)✅ 结果:李四
- 如果查找值不存在(比如
1005),结果是#N/A - 常用于员工编号、学号、身份证号、产品编码等「唯一值查找」
📌 强烈推荐:几乎所有“查具体值”的场景都应该用 FALSE!
3. 近似匹配(TRUE 或省略)⚠️ —— 用得少,但非常强大!
👉 意思是:“查找小于或等于查找值的最大值”。(找到最接近目标值的结果)
TRUE:找不到就选“最接近但不超过”的那个值(前提:必须升序!)
⚠️ 使用条件:
- 查找列必须是 升序排序(从小到大);
- 查找值不需要完全相等。
示例:分数 → 等级(区间查找)
| A(分数下限) | B(等级) |
|---|---|
| 0 | 不及格 |
| 60 | 及格 |
| 80 | 良好 |
| 90 | 优秀 |
公式:
=VLOOKUP(87, A:B, 2, TRUE)📊 查找过程:
- 0 ≤ 87 ✅
- 60 ≤ 87 ✅
- 80 ≤ 87 ✅
- 90 ≤ 87 ❌(超过了)
👉 所以返回上一行的等级:✅ 良好
✅ 典型应用:
- 成绩等级
- 工资档位
- 折扣区间
- 年龄段分层
4. 对比总结
| 场景 | 推荐参数 | 查找行为 | 注意事项 |
|---|---|---|---|
| 员工编号、姓名、学号等 精确查找 | FALSE | 必须完全匹配 | 最常用,安全 |
| 成绩等级、价格区间等 区间查找 | TRUE | 小于等于查找值的最大值 | 查找列必须升序! |
5. 常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
#N/A | 用 FALSE 时值不存在 | 检查查找值是否拼写正确 |
| 返回“错误值” | 用 TRUE 但数据未排序 | 把查找列按升序排序 |
| 返回错误行 | 用 TRUE 但其实需要精确查找 | 改成 FALSE |
6. 小结口诀:
- 找唯一值 → 用
FALSE(精确匹配) - 找区间段 → 用
TRUE(近似匹配,升序!)
7. 小练习(可在你下载的 Excel 里试试):
| 分数 | 公式 | 结果 |
|---|---|---|
| 59 | =VLOOKUP(59, 等级表!A:B, 2, TRUE) | 不及格 |
| 60 | =VLOOKUP(60, 等级表!A:B, 2, TRUE) | 及格 |
| 87 | =VLOOKUP(87, 等级表!A:B, 2, TRUE) | 良好 |
| 92 | =VLOOKUP(92, 等级表!A:B, 2, TRUE) | 优秀 |
总结一句话:
“FALSE”查精确,“TRUE”查区间。
1.4 常见错误及原因
| 错误 | 原因 |
|---|---|
#N/A | 查找值不存在,或未精确匹配 |
#REF! | 列号超过查找范围列数 |
#VALUE! | 列号不是数字 |
| 返回错误值 | [range_lookup] 错误使用为 TRUE |
1.5 总结:
- 精确查找时一定用
FALSE! - 查找值必须在查找区域的第一列。
- 注意锁定查找范围,防止复制公式后出错。
2. 实操
2.1 实操 1
2.2 实操 2
公众号:AI悦创【二维码】

AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Web、Linux」,招收学员面向国内外,国外占 80%。全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh

更新日志
d5a47-于b83d8-于c2471-于e4237-于f228c-于f0957-于4e7d5-于6481d-于418c0-于bb6b2-于