跳转至

XLOOKUP

类别:MS Excel 兼容函数 · 原生引入:Excel 2021

在区域或数组中查找匹配项,并从第二个区域或数组返回对应项。

语法

=XLOOKUP(查找值, 查找数组, 返回数组, [未找到时], [匹配模式], [搜索模式])

参数

参数 必需 说明
查找值 必需 要查找的值
查找数组 必需 要搜索的区域/数组
返回数组 必需 要返回的区域/数组
未找到时 可选 无匹配时返回的值(可选)
匹配模式 可选 0 精确(默认),-1 较小值,1 较大值,3 正则
搜索模式 可选 1 从前到后(默认),-1 从后到前

返回

以数组形式返回匹配位置处返回数组的行(纵向查找)或列(横向查找),在支持动态数组的 Excel 中会溢出。省略区域、数组为空、或无匹配且未提供替代值时返回 #N/A;匹配位置超出返回数组范围时返回 #REF!;内部错误返回 #VALUE!。

示例

公式 结果 说明
=XLOOKUP("b",{"a";"b";"c"},{10;20;30}) 20 精确匹配查找
=XLOOKUP(2,{1;2;3},{10,11;20,21;30,31}) {20,21} 溢出整个匹配行
=XLOOKUP(9,{1;2;3},{10;20;30},"none") none 无匹配时返回替代值
=XLOOKUP({2;3},{1;2;3},{"a";"b";"c"}) {b;c} 查找值数组 → 按元素查找
=XLOOKUP("^B",{"apple";"Banana";"cherry"},{1;2;3},"none",3) 2 正则匹配(match_mode 3)
=XLOOKUP("(?i)^b",{"apple";"Banana";"cherry"},{1;2;3},"none",3) 2 前缀 (?i) 忽略大小写

备注

  • 不支持 match_mode 2(通配符)和 search_mode 2/-2(二分查找)。
  • match_mode 3(正则)将查找值解释为正则表达式模式,查找文本单元格中包含该模式匹配的项(部分匹配,REGEXTEST 方式)— 模式编号与 Microsoft 365 原生 XLOOKUP 的 2024 年新增功能相同。默认区分大小写;在模式前加 (?i) 可忽略大小写(与原生用法相同)。非文本单元格不会匹配;查找值不是文本、正则无效、或与 search_mode 2/-2(二分查找)组合时返回 #VALUE!。无匹配时仍应用未找到时的值。
  • 正则语法为 std::wregex 的 ECMAScript(与原生 365 的 PCRE2 可能略有差异)。
  • 查找数组为 1 列时按纵向查找,否则以首行为对象按横向查找。
  • 查找值指定为数组时按元素查找,结果以与查找值相同的形状溢出 — 返回范围为多列时,各元素结果降级为第一个值(与原生一致);错误的查找值返回该错误。
  • 相关函数:XMATCH、FILTER。
  • 支持:Excel 2010+。在没有原生函数的旧版本中按 XLOOKUP 原名注册(直接替换),在具有原生函数的新版 Excel 中注册为 EG.XLOOKUP