Excel XLOOKUP 怎么用?比 VLOOKUP 更强的查找
用了多年 VLOOKUP,你一定踩过这几个坑:查找列必须放最左边、中间插列后列号全错、没找到就扔一个 #N/A 没法处理。微软在较新版本的 Excel 里推出了 XLOOKUP,把这些老毛病一次性改掉了。本文讲清 XLOOKUP 的语法、比 VLOOKUP 强在哪里、有什么门槛,以及如果你用的是老版本 Excel 或者根本不想写公式,用超级表关联列点几下就能搞定同样的事。
XLOOKUP 语法是什么?
XLOOKUP 的基础语法只需要三个必填参数,第四个可选:
=XLOOKUP(查找值, 查找列, 返回列, [找不到时显示的内容])
举个例子:你有一张订单表(A 列是「客户 ID」,B 列是「客户姓名」),另一张客户信息表(E 列是「客户 ID」,F 列是「所属城市」)。你想在订单表 C 列把城市查过来:
=XLOOKUP(A2, 客户表!E:E, 客户表!F:F, "未找到")
- A2:要查的值(这一行的客户 ID);
- 客户表!E:E:去哪一列找(查找列,单独一列,不是范围);
- 客户表!F:F:找到后返回哪一列(返回列,同样单独一列);
- "未找到":找不到时显示这段文字,而不是报
#N/A。
向下填充整列,城市就全部匹配好了。如果还要匹配「联系电话」,把返回列改成 客户表!G:G 就行,完全不用数第几列。
XLOOKUP 比 VLOOKUP 强在哪里?
不用写列号,插列不会坏
VLOOKUP 的第三个参数是「返回第几列」,这个数字写死在公式里。一旦在数据范围中间插入或删除一列,所有 VLOOKUP 的列号立刻错位,必须手动逐个修改。XLOOKUP 直接引用「返回列」本身,无论中间怎么增删列,公式始终指向正确的那一列。
可以从右往左反向查找
VLOOKUP 要求查找列必须是范围最左边那列——想反向查就得用更复杂的 INDEX+MATCH 组合。XLOOKUP 没有这个限制:查找列和返回列是分开指定的,左边、右边都无所谓,直接写就行。
找不到时可以自定义提示
VLOOKUP 找不到匹配项就返回 #N/A,再套 IFERROR 包一层才能换成友好提示,写起来啰嗦。XLOOKUP 第四个参数直接指定「找不到时显示什么」,一个公式搞定,不需要再嵌套。
精确匹配是默认行为
VLOOKUP 第四个参数如果忘记写 FALSE,默认近似匹配,经常匹配出奇怪的值。XLOOKUP 默认就是精确匹配,漏写不会出错。
XLOOKUP 的门槛:并非所有版本都有
XLOOKUP 是微软 2019 年底之后陆续推送的新函数,只在以下版本可用:
- Microsoft 365(Office 365,订阅版)——所有平台均已支持;
- Excel 2021 及更新版本——永久授权版本从 2021 起支持;
- Excel Online / Excel for the web——在线版已支持。
如果你用的是 Excel 2019、Excel 2016、Excel 2013 或更老版本,XLOOKUP 函数根本不存在,输入之后直接报 #NAME? 错误。遇到这种情况,可以用 VLOOKUP(见VLOOKUP 怎么用)或者 INDEX+MATCH(见INDEX+MATCH 查找)来替代,也可以用本文下面介绍的超级表关联列,完全绕开版本限制。
即使你的 Excel 版本支持 XLOOKUP,如果文件要分发给使用老版本的同事,他们打开之后公式一样会变成错误。这是 XLOOKUP 目前最大的实际痛点。
更简单:用超级表关联列,不挑版本
超级表(TableDI)是一款桌面高能表格助手,macOS 和 Windows 均可用,离线运行,不需要登录。它把「按某列查另一张表」做成了可视化的关联列操作,不用写任何公式,也不挑 Excel 版本。步骤如下:
- 把两张表导入超级表(支持 Excel / CSV,直接拖进来)。
- 在查询表上新建一个关联列,选择「按客户 ID 匹配 客户信息表」。
- 勾选要带过来的列(城市、联系电话可以一次全选,不用逐列操作)。
- 完成——关联结果自动填好。之后客户信息表一改,这边自动更新,无需重拖公式。
关联列支持反向查找,也支持多列同时匹配,和 XLOOKUP 解决的问题完全一致,但不依赖任何 Excel 版本,旧系统一样用得了。匹配好的数据还能继续接分组汇总、AI 处理,做进一步的数据加工。
如果你还不熟悉 VLOOKUP 的基础用法,可以先看VLOOKUP 怎么用和两个表格匹配数据这两篇,再结合本文理解 XLOOKUP 的改进之处。
XLOOKUP vs VLOOKUP vs 超级表关联列
| 对比项 | VLOOKUP | XLOOKUP | 超级表关联列 |
|---|---|---|---|
| 写法复杂度 | 要记 4 个参数+列号 | 3 个参数,更直观 | 点选,不写公式 |
| 插列后公式是否坏 | 坏,列号错位 | 不坏,引用列本身 | 不坏 |
| 反向查找 | 不支持,要改 INDEX+MATCH | 支持 | 支持 |
| 找不到时处理 | 要套 IFERROR | 第 4 参数直接指定 | 自动空值/可配置 |
| 一次匹配多列 | 每列写一次 | 每列写一次 | 一次勾选多列 |
| 源表更新后 | 不自动更新 | 不自动更新 | 自动跟着变 |
| Excel 版本要求 | 无(所有版本) | 需要 365 / 2021+ | 无(桌面独立程序) |
常见问题
XLOOKUP 哪个版本的 Excel 才有?
Microsoft 365(订阅版)和 Excel 2021 及更新版本均已支持 XLOOKUP。Excel 2019 及更旧版本不支持,输入后会报 #NAME? 错误。如果你的 Excel 是永久授权的老版本,可以改用 VLOOKUP(见VLOOKUP 怎么用)、INDEX+MATCH(见INDEX+MATCH 查找),或者使用超级表关联列完全绕开版本限制。
XLOOKUP 和 VLOOKUP 有什么区别?
核心区别有四点:XLOOKUP 不写列号(直接引用返回列,插列不坏公式);支持从右往左反向查找;第四参数可以直接指定找不到时的显示内容,不需要套 IFERROR;默认精确匹配,不会因为漏写 FALSE 而出错。VLOOKUP 只需要 Excel 任意版本即可,兼容性更广;XLOOKUP 只在较新版本才有,但写起来更简单、更不容易出错。
老版本 Excel 没有 XLOOKUP,有什么替代方案?
最常用的替代是 INDEX+MATCH 组合——它同样支持反向查找、不写死列号,在所有版本的 Excel 里都能用,只是写法比 XLOOKUP 稍复杂一些,可以看INDEX+MATCH 查找一文。或者用超级表关联列,完全不写公式,也不受任何版本限制,操作体验比两种函数都更简单。