MICROSOFT

EP13. “XLOOKUP Function XLOOKUP 函数”

首页 Microsoft 工具 Excel · Functions · Lookup & Reference · EP13
约 6 分钟· #EP13#Excel#Lookup & Reference
🔒 登录后可标记已读
  • XLOOKUP 是 Excel 365 / 2021 才有的新一代查找函数
  • 功能比 VLOOKUP 更全面:默认精确匹配、支持向左查找、可以一次返回多列、支持从后往前找
  • 前置知识建议先看过 EP01 的 VLOOKUP,方便对照差异
  • 学完能理解为什么官方建议新版本用户直接改用 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 做默认精确匹配的查找,不用再额外指定第四参数
  • ✅ 能用 XLOOKUP 直接向左查找,不用绕道 INDEX+MATCH
  • ✅ 能用 XLOOKUP 一次返回多列数据,或反向搜索找最后一个匹配

常见错误

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

Sources

Blog / Website:

  1. Xlookup