VLOOKUP 怎么用?从"查一个值"到"反向查找",一篇讲透

2026-10-21 11 次浏览 Excel 函数
VLOOKUP 是 Excel 里搜索量最大的函数,也是最多人学一半就放弃的函数。这篇从一张员工表开始,把四个参数、绝对引用、反向查找、#N/A 报错全讲清楚。
VLOOKUP(查找值, 查找区域, 返回第几列, 0)
用途在一张表里按某个已知的值,查出同一行另一列的内容。

VLOOKUP 是 Excel 里最有名的函数,也是最多人"学了一半"的函数。

学一半的表现是:知道它大概能查东西,但一到自己表上就出 `#N/A`;知道有四个参数,但第四个参数到底是 0 还是 1,一直没搞明白。

这篇我不用参数表讲,用一张真实的表讲。你看完应该能直接套。

关键如果你还没建立「函数能干活」的直觉,建议先看 Excel 最值得先学的 10 个函数,那里讲了学习顺序。

先看这张表,这就是你要解决的问题

假设你手上有两张表。

表一:员工信息表(在 A 到 C 列)

工号姓名部门
A001张三技术部
A002李四市场部
A003王五技术部
A004赵六财务部

表二:本月考勤表(在 E 到 F 列)

工号姓名
A003
A001
A004

现在你要做的活:把表二里空着的"姓名"填上,依据是表一的对应关系。

手工做法是一个一个看,看三行还行,看三百行会瞎。

关键这就是 VLOOKUP 存在的理由:拿"已知的工号",去表一里找,把同一行的"姓名"搬过来。

拆开看:四个参数各是什么意思

=VLOOKUP(要查什么, 去哪里查, 带回来第几列, 0)

用上面那张表,具体是:

=VLOOKUP(E2, $A$2:$C$5, 2, 0)

我一个个说清楚。

第一个参数:要查什么

`E2` —— 就是表二里的那个工号 `A003`。

这里有个关键认知:VLOOKUP 是"拿着一把钥匙去找门"。钥匙就是你手上有的东西。

在上面的例子里,你手上有的钥匙是工号,想拿的是姓名。所以第一个参数一定是工号所在的单元格。

易错最常见的错:把第一个参数写成"姓名"。你想拿姓名,就拿姓名当钥匙——但表二里姓名是空的,你拿一个空格子去找,当然找不到。

第二个参数:去哪里查

`$A$2:$C$5` —— 表一的数据区域,从工号列的第一行数据开始,一直框到最后一列。

这里有三个坑,我一个个说:

坑一:区域必须从"钥匙列"开始。 也就是工号那一列必须是区域的第一列。你不能框 `B2:C5`(从姓名开始),那样它找不到工号。

坑二:必须加 `$` 锁定。 这点下面单独讲,是 90% 的人第一次用会踩的坑。

关键VLOOKUP 还有三个改不掉的短板:只能向右查、插列会静默出错、数「第几列」容易错。想看它和替代方案的正面交锋,见 INDEX + MATCH 为什么比 VLOOKUP 好用。

坑三:区域不要框整列。 有人图省事写 `A:C`,能跑,但数据一多会变慢。框实际的数据范围就行。

第三个参数:带回来第几列

`2` —— 在 `A2:C5` 这个区域里,你要的"姓名"是第几列?

从 A 数起:A 是第 1 列(工号),B 是第 2 列(姓名),C 是第 3 列(部门)。

所以姓名是 2,部门是 3。

关键注意:是"在查找区域里的第几列",不是"在工作表的第几列"。如果你框的是 `B2:D5`,那姓名就是第 1 列。

第四个参数:0 还是 1

填 0。

就这一个答案,别纠结。

  • `0`(或 `FALSE`)= 精确匹配。找"一模一样"的那个。
  • `1`(或 `TRUE`)= 近似匹配。找"最接近但不超过"的那个。

日常表格里你几乎永远要精确匹配。填 1 的后果是:查 `A003` 可能给你返回 `A001` 的数据,而且完全不报错——这是最可怕的错误,因为它不报错。

易错记住这句话:第四个参数永远填 0。 如果你看到别人的公式里没写第四个参数,那它默认就是 1(近似匹配),多半是错的。

那个 `$` 到底是怎么回事

这是 VLOOKUP 新手第二个必踩的坑,值得单独讲。

假设你写了这样一个公式:

=VLOOKUP(E2, A2:C5, 2, 0)

在 F2 单元格里,它工作正常,返回"王五"。

然后你往下拖,拖到 F3。

Excel 会自动把公式里的引用一起往下挪,变成:

=VLOOKUP(E3, A3:C6, 2, 0)

问题来了:`A2:C5` 变成了 `A3:C6`。

查找区域往下挪了一格,第一行变成了 `A3`(王五),而表一的 `A001`(张三)已经被挪出区域了。所以查 `A001` 会返回 `#N/A`。

解决办法就是加 `$`:

=VLOOKUP(E2, $A$2:$C$5, 2, 0)

`$` 的意思是"钉住,别动"。`$A$2` 表示列和行都钉住,往下拖、往右拖,它都不变。

关键快速加 $ 的方法:在编辑栏里选中 `A2:C5`,按一下 F4。Excel 会自动加上四个 `$`。再按可以切换成 `A$2:C$5` 等其它形式。

反向查找:VLOOKUP 的死穴

现在换个需求。

你知道姓名,想查出工号。

用 VLOOKUP 直接做,会失败。因为姓名(B 列)在工号(A 列)的右边,而 VLOOKUP 只能"从左往右找"——它要求钥匙在区域的第一列。

有三种解法,我推荐第二种。

解法一:把表一改造成"姓名在前"

在旁边加一列辅助区,把姓名和工号对调顺序。能用,但丑,而且原表一改动就得重做。

解法二:IF 拼一个虚拟区域(推荐,不用改原表)

=VLOOKUP(要查的姓名, IF({1,0}, $B$2:$B$5, $A$2:$A$5), 2, 0)

原理是:`IF({1,0}, 姓名列, 工号列)` 会临时拼出一个"姓名在左、工号在右"的虚拟区域,VLOOKUP 就能用了。

关键这段公式是数组公式。在 Excel 365 / 2021 里直接回车即可;在 2016 及更早版本里,要按 Ctrl+Shift+Enter 输入,公式两边会自动出现大括号。

解法三:改用 INDEX + MATCH

这是更彻底的方案,我在另一篇里单独讲。简单说:`=INDEX(要返回的列, MATCH(要找的值, 查找的列, 0))`,它能随便向左向右查。

为什么老出 #N/A:五个原因,从多到少

`#N/A` 是 VLOOKUP 最常见的报错。按出现频率排:

报错原因怎么判断怎么改
没加 `$`,拖动后区域跑偏第一行对,往下就错了选中区域按 F4
查找值两边有空格肉眼看不出,长度不一样用 `TRIM()` 包一层
数字和文本格式不一致一个是 1001,一个是 "1001"用 `--` 或 `VALUE()` 转换
真的没有这个值手工核对确实不存在用 IFERROR 包起来
区域第一列不是钥匙列检查框选范围重新框,从钥匙列开始

前两个占了八成。特别是"空格"这个——从系统导出的数据,几乎必然带不可见空格,`A003` 和 `A003 ` 在 VLOOKUP 眼里是两个不同的东西。

关键排查技巧:用 `=LEN(E2)` 看长度。如果明明 4 个字符却显示 5,就是有空格。

让报错变好看:套一层 IFERROR

查不到的时候显示一片 `#N/A`,表就很难看。套一层就好:

=IFERROR(VLOOKUP(E2, $A$2:$C$5, 2, 0), "未找到")

这样查不到时显示"未找到",比红字友好得多。

完整的操作步骤(照着做一遍)

  1. 在表二的"姓名"列第一个空格(F2)里,输入 `=VLOOKUP(`
  2. 点一下 E2(工号),公式里出现 `E2`,输入 `,`
  3. 用鼠标框选表一的 `A2:C5`,按 F4 锁定,输入 `,`
  4. 输入 `2`(姓名在区域第 2 列),输入 `,`
  5. 输入 `0`,输入 `)`,回车
  6. 选中 F2,双击右下角的小方块(填充柄),整列自动填好

一句话总结

VLOOKUP 就是:拿着你手上有的,去一张表的第一列里找,找到了就把同一行第 N 列的东西搬回来。第四参数填 0,区域按 F4。

记住这一句,剩下的都是细节。

关键学会这个之后,下一步建议学 INDEX + MATCH——它能向下、向上任意方向查,而且插入列不会乱。这两个函数配合起来,基本能覆盖所有"查表"的活。

评论 0

还没有评论,来说第一句吧。

发表评论

提交后需审核通过才会显示。

对作品感兴趣?

欢迎交流使用体验、功能建议或技术问题,看到消息我会尽快回复。