在线 Excel 编辑器
免费使用

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 的对比

XLOOKUPVLOOKUP
可用版本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,包括「未找到」提示。只有小数点用逗号的区域设置里参数分隔符不同:那里要写分号。