XLOOKUP 函数:语法、示例与错误排查
更新于 2026-10-12 · 免费 · 兼容 Excel 与 Google Sheets
语法
=XLOOKUP(查找值, 查找数组, 返回数组, [未找到值], [匹配模式], [搜索模式])快速答案
XLOOKUP 在一列中查找值并返回同一行另一列(或区域)的内容——可以左右任意方向查找,默认精确匹配,还内置「未找到」提示:=XLOOKUP(A2, $D$2:$D$500, $E$2:$E$500, "未找到")。#NAME? 几乎总是说明 Excel 版本低于 2021;#N/A 说明值不在查找列里,或者只是看起来一样(文本型数字、不可见空格)。
语法
=XLOOKUP(查找值, 查找数组, 返回数组, [未找到值], [匹配模式], [搜索模式])| 参数 | 是否必填 | 含义 |
|---|---|---|
| 查找值 | 必填 | 要查找的值:数字、文本、日期或单元格引用(如 A2)。 |
| 查找数组 | 必填 | 在其中查找的那一列。与 VLOOKUP 不同,它不必是任何区域的第一列——直接指向这一列即可。 |
| 返回数组 | 必填 | 要返回内容所在的列(或多列)。它可以在查找列的左边;两个区域的行数必须一致。 |
| 未找到值 | 可选 | 找不到时的自定义提示或返回值——不用再套 IFERROR。 |
| 匹配模式 | 可选 | 0(默认)= 精确匹配。-1 = 精确匹配或下一个较小值。1 = 精确匹配或下一个较大值。2 = 通配符匹配(* 和 ?)。 |
| 搜索模式 | 可选 | 1(默认)= 从头到尾。-1 = 倒序查找(先匹配最后一条)。2/-2 = 对已排序数据的二分查找。 |
根据区域设置不同,参数可能用分号而不是逗号分隔:=XLOOKUP(A2; $D$2:$D$500; $E$2:$E$500; "未找到")。在小数点用逗号的地区这是标准写法。
基础示例
=XLOOKUP(A2, $D$2:$D$500, $E$2:$E$500, "未找到")日常最常用的模式:在 D 列查找 A2 的值并返回 E 列对应内容。找不到时单元格显示「未找到」而不是生硬的 #N/A——完全不需要包一层错误处理。
=XLOOKUP(A2, $E$2:$E$500, $D$2:$D$500, "未找到")向左查找:返回列在查找列的左边。在 XLOOKUP 出现之前,这种场景只能被迫用 INDEX/MATCH 解决。
=XLOOKUP(A2, $D$2:$D$500, $E$2:$E$500, "未找到", 0, -1)从尾向头查找:键值有重复时返回最新一条而不是第一条——价格表和状态日志场景很实用。
查找数组和返回数组的行数必须完全一致。如果一个区域是 D2:D500 而另一个是 E2:E499,XLOOKUP 会报 #VALUE!。
常见错误与排查方法
| 错误 | 最常见原因 | 解决办法 |
|---|---|---|
| #NAME? | Excel 版本早于 2021(2019 及更早没有 XLOOKUP),或函数名拼写错误。 | XLOOKUP 需要 Microsoft 365 或 Excel 2021+。老版本请改用 INDEX/MATCH 或 VLOOKUP。 |
| #VALUE! | 查找数组和返回数组行数不一致,或者其中一个区域只选了单个单元格。 | 让两个区域行数完全相同,例如 D2:D500 和 E2:E500。 |
| #N/A | 值不在查找列里——或者只是看起来一样(文本型数字、末尾空格或不换行空格)。 | 用 VALUE() 转换文本型数字、清理不可见空格;或者加一个「未找到值」参数给出友好提示。 |
| #SPILL! | 多列返回数组的溢出区域被旁边的单元格占用。 | 清空公式下方/右侧准备放结果的单元格。 |
从网页复制来的末尾空格和不换行空格同样是这里最隐蔽的 #N/A 来源:对 XLOOKUP 来说,「NYC 」和「NYC」是两个不同的字符串。查找前先一键清理整列。
XLOOKUP 与 VLOOKUP 的对比
| XLOOKUP | VLOOKUP | |
|---|---|---|
| 可用版本 | Microsoft 365 和 Excel 2021+ | 所有 Excel 版本(含 Google Sheets) |
| 能否向左查找 | 能 | 不能 |
| 默认精确匹配 | 是 | 否——必须写 FALSE |
| 插入列是否安全 | 安全——区域直接指向整列 | 不安全——固定列号会错位 |
| 找不到值时 | 内置「未找到值」参数 | #N/A(需套 IFERROR) |
| 多列返回 | 支持——一条公式溢出多列 | 不支持——每条公式只返回一个值 |
只要你的 Excel 是 Microsoft 365,新工作簿一律用 XLOOKUP:一次性解决「只能查第一列」、必须写 FALSE、还要套 IFERROR 这三件麻烦事。旧的共享工作簿和需要全平台兼容的 Google Sheets 公式继续用 VLOOKUP。
Google Sheets 中的 XLOOKUP
Google Sheets 已支持 XLOOKUP,六个参数和默认行为与 Excel 完全一致,上面的公式可以直接粘贴过去使用。
- 默认精确匹配和「未找到值」参数在两个平台行为相同。
- 通配符配合匹配模式 2 使用,Excel 与 Sheets 表现一致。
- 在小数点用逗号的区域设置(欧洲和拉美大部分地区),参数之间要写分号:=XLOOKUP(A2; D2:D500; E2:E500; "未找到")。Excel 同理。
- 早于 XLOOKUP 的老 Sheets 文档里 VLOOKUP 依然可用——两个函数共存,混用没有问题。
局限与实用技巧
- 版本门槛:XLOOKUP 只存在于 Microsoft 365 和 Excel 2021+。用了它的工作簿一旦被 Excel 2019 用户打开就显示 #NAME?。
- 两个数组必须等高——养成一次框选 D2:D500 和 E2:E500 的习惯。
- 双击填充柄(选区角落的小方块)可以把公式一次性复制到最后一行。
- 用搜索模式 -1 从带重复键的日志里取最新一条匹配。
- 行列双向查找时把 XLOOKUP 嵌套进 XLOOKUP——它取代了老的 INDEX/MATCH/MATCH 写法。
要从另一个文件带回多列内容而不只是一个值?那是表连接而不是查找:下面的免费工具不用写公式就能做到。
相关工具
相关函数
常见问题
XLOOKUP 函数是做什么的?
XLOOKUP 在一列里查找一个值,并返回同一行另一列的内容——方向不限,默认精确匹配,还内置可选的「未找到」提示。它是 VLOOKUP 和 INDEX/MATCH 的现代替代品。
为什么我的 Excel 里 XLOOKUP 用不了?
多数是版本问题:XLOOKUP 只存在于 Microsoft 365 和 Excel 2021 及更高版本。Excel 2019 及更早版本会返回 #NAME?。解决办法只有升级,或改用全版本通用的 INDEX/MATCH。
XLOOKUP 找不到时怎么显示「未找到」而不是 #N/A?
填第四个参数:=XLOOKUP(A2, D2:D500, E2:E500, "未找到")。与 VLOOKUP 不同,不需要再套 IFERROR——提示本身就是函数的一部分。
XLOOKUP 可以向左查找吗?
可以。查找列和返回列是两个独立区域,返回列可以放在任何位置——左边、右边或另一张工作表。这正是 XLOOKUP 优于 VLOOKUP 的主要原因。
XLOOKUP 能一次返回多列吗?
可以。把返回数组写成多列区域,例如 =XLOOKUP(A2, D2:D500, E2:G500),公式会溢出显示所有请求的列。确保旁边单元格是空的,否则会看到 #SPILL!。
XLOOKUP 比 VLOOKUP 好吗?
对 Microsoft 365 用户来说是的:默认精确匹配、可以左查、内置未找到提示、支持多列返回、插入列也不会出错。VLOOKUP 的价值在于老版本兼容性。
XLOOKUP 在 Google Sheets 里能用吗?
可以——Sheets 支持与 Excel 相同参数和默认值的 XLOOKUP,包括「未找到」提示。只有小数点用逗号的区域设置里参数分隔符不同:那里要写分号。
准备好处理你自己的文件了吗?
打开在线关联两个 Excel 表格(按键 Join) — 免费