Microsoft Lab
全部软件
Excel查找与引用(Lookup & Reference)约 5 分钟

XLOOKUP Function XLOOKUP 函数

重点内容


函数速查

函数语法用途例子
XLOOKUP=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])新一代查找函数,精确匹配为默认,支持双向查找=XLOOKUP(53,B3:B9,E3:E9)

VLOOKUP 和 XLOOKUP 怎么选

场景VLOOKUPXLOOKUP
默认匹配方式需要手动指定 FALSE 才是精确匹配默认就是精确匹配
向左查找做不到,要绕道 INDEX+MATCH天生支持
找不到时的提示要额外包一层 IFNA内建第四参数直接指定
一次返回多列做不到支持,自动 spilling
版本要求桌面版通用仅 Excel 365 / 2021 及以上

精确匹配(默认行为)

=XLOOKUP(53,B3:B9,E3:E9)

在 B3:B9 查找 53,从 E3:E9 返回对应值——不用像 VLOOKUP 那样额外指定第四参数为 FALSE,XLOOKUP 默认就是精确匹配。 另一个例子:=XLOOKUP(79,D3:D9,B3:B9),按 ID 79 查姓氏。


找不到时的处理

默认找不到会返回 #N/A(比如查找值 28 在 B3:B9 里不存在)。XLOOKUP 内建了第四参数可以直接指定找不到时显示什么,不用再额外包 IFNA:

=XLOOKUP(28,B3:B9,E3:E9,"未找到")

近似匹配

第五参数 match_mode 可以设为 -1(找下一个较小值)或 1(找下一个较大值),不需要像 VLOOKUP 那样必须先排序数据:

=XLOOKUP(85,B3:B7,E3:E7,,-1) → 找到次小值 80 =XLOOKUP(85,B3:B7,E3:E7,,1) → 找到次大值 90

向左查找

XLOOKUP 没有"只能向右"的限制,直接可以按姓氏反查 ID,不需要像 VLOOKUP 那样绕道用 INDEX+MATCH(对比 EP07)。


一次返回多列(多值返回)

把 return_array 参数从单列范围扩大成多列范围(比如从 C6:C12 扩大到 C6:E12),一条公式就能同时返回名字、姓氏、薪资三列数据,自动铺开到相邻单元格,这种自动铺开的行为叫 spilling(溢出)。

📷 画面提示

一条 XLOOKUP 公式返回多列后,结果自动溢出铺满相邻单元格的实际效果


水平查找

XLOOKUP 同样能做水平方向的查找,取代传统的 HLOOKUP 函数。


反向搜索(找最后一个匹配)

第六参数 search_mode 设为 -1,代表从数据末尾往前搜索(而不是默认从头开始):

=XLOOKUP("Mia Reed",B3:B9,E3:E9,,0,-1)

如果有多个同名 "Mia"(比如 Mia Clark 和 Mia Reed 都叫 Mia),设成 -1 可以找到最后一个匹配到的那笔(Mia Reed 的薪资),而不是第一个。


学完你会

常见错误

  • XLOOKUP 只在 Excel 365 / Excel 2021 及之后版本可用,拿旧版本 Excel 打开会直接报错,分享文件给用旧版本同事时要注意
  • 忘记 XLOOKUP 默认就是精确匹配,习惯了 VLOOKUP 还去多此一举地额外指定精确匹配参数
  • 多值返回时忘记右边相邻单元格要留空,否则 spilling 会被占用的单元格挡住,报 #SPILL! 错误

Sources

Blog / Website:

  1. Xlookup
只记在你的浏览器里,换设备不会同步。