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。