XLOOKUP() 是 Excel 当前在查找函数家族(LOOKUP()、VLOOKUP()、HLOOKUP() 和 XLOOKUP())中最新的函数,具备诸多优势、更强的功能以及更高的灵活性。
在本教程中,我们将先介绍 XLOOKUP() 在 Excel 中的用途,以及它相较于旧版查找函数的改进;接着了解其基本语法;然后进入重点——如何在多个条件下使用 XLOOKUP()。
如果您需要系统学习 Excel 基础,推荐从对初学者友好的 Introduction to Excel 课程开始。
要点速览
-
XLOOKUP() 是 Excel 最新的查找函数。与 VLOOKUP()、HLOOKUP() 和 LOOKUP() 相比,它更灵活、更快速,并支持多方向搜索和部分匹配。
-
在多条件搜索时,主要有两种方法:拼接(用 & 连接查找值,如 =XLOOKUP(G2&G3, B2:B11&C2:C11, D2:D11))或布尔表达式(将条件相乘,如 =XLOOKUP(1, (B2:B11=G2)*(C2:C11=G3), D2:D11))。
-
拼接法更简单、可读性更好;布尔表达式则更灵活。
-
可选参数可进一步扩展功能:[if_not_found] 可在无匹配时返回自定义文本,[match_mode] 启用近似或通配符匹配,[search_mode] 可反向搜索。
为何在 Excel 中使用 XLOOKUP()
XLOOKUP() 会在某个区域或数组中搜索,并返回首个匹配项对应的结果。如果没有精确匹配且指定了匹配类型,XLOOKUP() 也可返回近似匹配。在诸多方面,XLOOKUP() 均优于 Excel 中的前辈函数(VLOOKUP()、HLOOKUP() 和 LOOKUP())。
它尤其支持以下能力:
- 横向与纵向、任意方向的搜索
- 多重搜索条件
- 默认精确匹配,同时可进行近似匹配
- 部分匹配
- 返回多列与多行
- 在无匹配时返回自定义文本。
此外,在处理大型数据时,XLOOKUP() 的性能也优于旧有查找函数。
如何在单一条件下使用 XLOOKUP()
先简要回顾 XLOOKUP() 的基本语法:
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode]) 技术支持
其中必需参数为:
可选参数为:
-
[if_not_found]——在无匹配时返回的指定文本
-
[match_mode]——匹配类型(精确或近似),以及在无匹配时返回的结果。
-
[search_mode]——搜索模式(正向或反向搜索,或在按升序/降序排序的查找数组上进行二分搜索)。
稍后我们将看到这些可选参数的示例。
想学习或复习更多实用的 Excel 函数与公式,可查看 The 15 Basic Excel Formulas Everyone Needs to Know 教程以及 Excel Formulas Cheat Sheet 速查表。
如何在多个条件下使用 XLOOKUP()
从基本语法可见,XLOOKUP() 默认按单一变量的一个查找值工作。
不过,我们可以将其改造为同时在多个变量上使用,在每个变量中搜索不同的查找值。换言之,我们可以通过应用多个条件,用 XLOOKUP() 来完成搜索。主要有两种方法:拼接与布尔表达式,下面分别介绍。
在展开技术细节前,先看一下我们要使用的 Excel 表:该表包含 10 只猫的相关信息,包括名字、颜色和年龄:

在接下来的示例中,我们将用 XLOOKUP() 通过其中两个特征来查找某只猫的第三个特征。
尽管这个表很简单,在每个案例中我们不用任何函数也能直接看出结果,但此处的重点在于理解 XLOOKUP() 多条件用法的核心原理。掌握这些原理后,您即可轻松扩展到更复杂的真实场景,例如包含两个以上的搜索条件或满足特定约束。
通过拼接实现的多条件 XLOOKUP()
拼接法相当直接:将相应的查找值与查找数组彼此拼接。我们来看它如何工作。
假设我们要找到一只名叫 Nala、白灰相间的猫的年龄。为方便起见,我们把这两个条件放在与数据表同一工作表上:

此时,XLOOKUP() 的公式如下:
=XLOOKUP(G2&G3, B2:B11&C2:C11, D2:D11)技术支持
它将返回 2.5,即首个白灰相间的 Nala 的年龄(我的猫 😺)。请记住,XLOOKUP() 返回的是首个匹配项对应的结果。
为理解上述公式前两个带有与号的组件代表什么,我们可以分别在单元格中运行它们:
=B2:B11&C2:C11技术支持
结果是 NalaWhite 和 Grey。
=B2:B11&C2:C11技术支持
结果为:

就是这么简单:我们只是按此前讨论的 XLOOKUP() 基本语法,把相应的查找值与查找数组拼接在一起。
通过布尔表达式实现的多条件 XLOOKUP()
现在,用第二种方法——布尔表达式——来完成同样的任务:查找一只名叫 Nala、白灰相间的猫的年龄。此时 XLOOKUP() 公式如下:
=XLOOKUP(1, (B2:B11=G2)*(C2:C11=G3), D2:D11)技术支持
如预期,它也会返回 2.5,即首个白灰相间的 Nala 的年龄。
我们来拆解该公式。这里的 1 表示 TRUE,也就是我们在查找数组(公式的第二个组件 (B2:B11=G2)*(C2:C11=G3))中寻找 TRUE 的位置。
而该组件由两个因子相乘构成,分别检验两个条件:第一个判断名字是否等于目标名字,第二个判断颜色是否等于目标颜色。我们分别在单元格中运行每个因子:
=B2:B11=G2技术支持
结果为:

=C2:C11=G3技术支持
结果为:

现在运行该组件的完整形式:
=(B2:B11=G2)*(C2:C11=G3)技术支持
结果为:

虽然结果中出现了两个 1(即两个 TRUE),但 XLOOKUP() 会返回与首个匹配项对应的结果。
在多条件场景下使用布尔表达式的方法看起来比拼接法更复杂也更不直观;如果条件数超过两个,这一点会更明显。那为什么不总是用拼接法呢?
原因在于:使用布尔表达式能在多条件 XLOOKUP() 中提供更高的灵活性。下面来看它相对拼接法的优势。
检查 FALSE 值
在上面的公式中,我们通过传入 1 来检查布尔表达式是否为 TRUE:
=XLOOKUP(1, (B2:B11=G2)*(C2:C11=G3), D2:D11)技术支持
有时我们需要判断布尔表达式是否为 FALSE。例如,想找到表中不是白灰相间 Nala 的第一只猫的年龄。可将公式改为:
=XLOOKUP(0, (B2:B11=G2)*(C2:C11=G3), D2:D11)技术支持
结果为 1,即第一只不是白灰相间 Nala 的猫的年龄(更准确地说,是一只三花的 Nala,而不是白灰相间)。
使用逻辑运算符
采用布尔表达式时,我们不仅能检查是否相等。比如,想要找到名字为 Nala 且年龄小于 2 岁的猫的颜色:

此时的 XLOOKUP() 公式为:
=XLOOKUP(1, (B2:B11=G2)*(D2:D11<G3), C2:C11)技术支持
结果为 Tricolor(三花)。
满足至少一个条件
前面的示例都是要求满足提供的全部条件。在某些场景下,我们可能只需满足至少一个条件。
回到最初的任务——查找一只名叫 Nala、白灰相间的猫的年龄:

这一次,我们要查找的是名字是 Nala 或 白灰相间的猫的年龄。XLOOKUP() 公式如下:
=XLOOKUP(1, (B2:B11=G2)+(C2:C11=G3), D2:D11)技术支持
它返回 1,即一只三花 Nala 的年龄。
提醒一下:当我们要求同时满足“名字为 Nala”且“白灰相间”时,公式为:
=XLOOKUP(1, (B2:B11=G2)*(C2:C11=G3), D2:D11)技术支持
将 * 替换为 +,逻辑就发生了改变。
若您想进一步释放 Excel 的潜能,可考虑实践导向、体系完善的 Excel Fundamentals 能力路径。
多条件 XLOOKUP() 的可选参数
与单条件下的常规用法一样,在多条件场景中我们同样可以使用函数的附加选项,即 [if_not_found]、[match_mode] 和 [search_mode] 这三个可选参数。
下面以简短示例展示在多条件下结合 XLOOKUP() 使用这些参数的方法。为简化起见,示例均采用拼接法。
无匹配时返回指定文本
这里我们要查找一只黑色 Nala 的年龄——该猫在表中并不存在:

此时,我们在 XLOOKUP() 公式中加入可选参数 [if_not_found],为其指定无匹配时要返回的文本:
=XLOOKUP(G2&G3, B2:B11&C2:C11, D2:D11, "No cat is found")技术支持
函数确实返回了指定文本:No cat is found。如果未提供文本,函数会返回 #N/A。
返回近似匹配
比如,我们要查找一只三花 Nala 的年龄,但不确定表中颜色写作 "Tricolor" 还是 "Tricolour"。这时需使用基于通配符的近似匹配,并将 [match_mode] 参数设为 2。

在上表中,我们使用了星号(*)作为通配符,表示任意数量字符(包括 0)。更多通配符可参见 Microsoft Office 的文档。
此处的 XLOOKUP() 公式为:
=XLOOKUP(G2&G3, B2:B11&C2:C11, D2:D11, , 2)技术支持
其结果为 1,即表中首个(也是唯一一个)三花 Nala 的年龄。
注意,公式中的参数 2 表示我们要进行近似匹配,而不是查找颜色为 "Tricolo*r" 的 Nala。在本例中,星号匹配到了 “Tricolor”,同样也会匹配 “Tricolour” 或例如 “Tricolooor”。
执行反向搜索
让我们重复最开始的练习——查找白灰相间 Nala 的年龄——但这次从最后一项开始搜索。

为此,需要将 [search_mode] 设为 -1,如下:
=XLOOKUP(G2&G3, B2:B11&C2:C11, D2:D11, , , -1)技术支持
函数返回 7,即从查找数组末尾开始找到的首个白灰相间 Nala 的年龄。
XLOOKUP() 与 INDEX()、MATCH() 的对比
在旧版 Excel 中,如需实现与多条件 XLOOKUP() 类似的功能,通常要组合 INDEX() 与 MATCH()。这里不展开两者的语法,仅对比如何用旧方法 INDEX() + MATCH() 和新方法 XLOOKUP() 来查找首个白灰相间 Nala 的年龄(单元格引用可参考前表):
=INDEX(D2:D11, MATCH(1, (G2=B2:B11)*(G3=C2:C11), 0))
=XLOOKUP(1, (B2:B11=G2)*(C2:C11=G3), D2:D11)技术支持
尽管参数看上去有些相似,但采用 XLOOKUP() 的主要优势包括:
XLOOKUP()是 Excel 当前在查找函数家族(LOOKUP()、VLOOKUP()、HLOOKUP()和XLOOKUP())中最新的函数,具备诸多优势、更强的功能以及更高的灵活性。在本教程中,我们将先介绍
XLOOKUP()在 Excel 中的用途,以及它相较于旧版查找函数的改进;接着了解其基本语法;然后进入重点——如何在多个条件下使用XLOOKUP()。如果您需要系统学习 Excel 基础,推荐从对初学者友好的 Introduction to Excel 课程开始。
要点速览
XLOOKUP()是 Excel 最新的查找函数。与VLOOKUP()、HLOOKUP()和LOOKUP()相比,它更灵活、更快速,并支持多方向搜索和部分匹配。在多条件搜索时,主要有两种方法:拼接(用
&连接查找值,如=XLOOKUP(G2&G3, B2:B11&C2:C11, D2:D11))或布尔表达式(将条件相乘,如=XLOOKUP(1, (B2:B11=G2)*(C2:C11=G3), D2:D11))。拼接法更简单、可读性更好;布尔表达式则更灵活。
可选参数可进一步扩展功能:
[if_not_found]可在无匹配时返回自定义文本,[match_mode]启用近似或通配符匹配,[search_mode]可反向搜索。为何在 Excel 中使用 XLOOKUP()
XLOOKUP()会在某个区域或数组中搜索,并返回首个匹配项对应的结果。如果没有精确匹配且指定了匹配类型,XLOOKUP()也可返回近似匹配。在诸多方面,XLOOKUP()均优于 Excel 中的前辈函数(VLOOKUP()、HLOOKUP()和LOOKUP())。它尤其支持以下能力:
此外,在处理大型数据时,
XLOOKUP()的性能也优于旧有查找函数。如何在单一条件下使用 XLOOKUP()
先简要回顾
XLOOKUP()的基本语法:其中必需参数为:
lookup_value——要搜索的值lookup_array——进行搜索的数组或区域return_array——要返回结果的数组或区域可选参数为:
[if_not_found]——在无匹配时返回的指定文本[match_mode]——匹配类型(精确或近似),以及在无匹配时返回的结果。[search_mode]——搜索模式(正向或反向搜索,或在按升序/降序排序的查找数组上进行二分搜索)。稍后我们将看到这些可选参数的示例。
想学习或复习更多实用的 Excel 函数与公式,可查看 The 15 Basic Excel Formulas Everyone Needs to Know 教程以及 Excel Formulas Cheat Sheet 速查表。
如何在多个条件下使用 XLOOKUP()
从基本语法可见,
XLOOKUP()默认按单一变量的一个查找值工作。不过,我们可以将其改造为同时在多个变量上使用,在每个变量中搜索不同的查找值。换言之,我们可以通过应用多个条件,用
XLOOKUP()来完成搜索。主要有两种方法:拼接与布尔表达式,下面分别介绍。在展开技术细节前,先看一下我们要使用的 Excel 表:该表包含 10 只猫的相关信息,包括名字、颜色和年龄:
在接下来的示例中,我们将用
XLOOKUP()通过其中两个特征来查找某只猫的第三个特征。尽管这个表很简单,在每个案例中我们不用任何函数也能直接看出结果,但此处的重点在于理解
XLOOKUP()多条件用法的核心原理。掌握这些原理后,您即可轻松扩展到更复杂的真实场景,例如包含两个以上的搜索条件或满足特定约束。通过拼接实现的多条件 XLOOKUP()
拼接法相当直接:将相应的查找值与查找数组彼此拼接。我们来看它如何工作。
假设我们要找到一只名叫 Nala、白灰相间的猫的年龄。为方便起见,我们把这两个条件放在与数据表同一工作表上:
此时,
XLOOKUP()的公式如下:它将返回 2.5,即首个白灰相间的 Nala 的年龄(我的猫 😺)。请记住,
XLOOKUP()返回的是首个匹配项对应的结果。为理解上述公式前两个带有与号的组件代表什么,我们可以分别在单元格中运行它们:
结果是
NalaWhite和Grey。结果为:
就是这么简单:我们只是按此前讨论的
XLOOKUP()基本语法,把相应的查找值与查找数组拼接在一起。通过布尔表达式实现的多条件 XLOOKUP()
现在,用第二种方法——布尔表达式——来完成同样的任务:查找一只名叫 Nala、白灰相间的猫的年龄。此时
XLOOKUP()公式如下:如预期,它也会返回 2.5,即首个白灰相间的 Nala 的年龄。
我们来拆解该公式。这里的 1 表示
TRUE,也就是我们在查找数组(公式的第二个组件(B2:B11=G2)*(C2:C11=G3))中寻找TRUE的位置。而该组件由两个因子相乘构成,分别检验两个条件:第一个判断名字是否等于目标名字,第二个判断颜色是否等于目标颜色。我们分别在单元格中运行每个因子:
结果为:
结果为:
现在运行该组件的完整形式:
结果为:
虽然结果中出现了两个 1(即两个
TRUE),但XLOOKUP()会返回与首个匹配项对应的结果。在多条件场景下使用布尔表达式的方法看起来比拼接法更复杂也更不直观;如果条件数超过两个,这一点会更明显。那为什么不总是用拼接法呢?
原因在于:使用布尔表达式能在多条件
XLOOKUP()中提供更高的灵活性。下面来看它相对拼接法的优势。检查 FALSE 值
在上面的公式中,我们通过传入 1 来检查布尔表达式是否为
TRUE:有时我们需要判断布尔表达式是否为
FALSE。例如,想找到表中不是白灰相间 Nala 的第一只猫的年龄。可将公式改为:结果为 1,即第一只不是白灰相间 Nala 的猫的年龄(更准确地说,是一只三花的 Nala,而不是白灰相间)。
使用逻辑运算符
采用布尔表达式时,我们不仅能检查是否相等。比如,想要找到名字为 Nala 且年龄小于 2 岁的猫的颜色:
此时的
XLOOKUP()公式为:结果为
Tricolor(三花)。满足至少一个条件
前面的示例都是要求满足提供的
全部条件。在某些场景下,我们可能只需满足至少一个条件。回到最初的任务——查找一只名叫 Nala、白灰相间的猫的年龄:
这一次,我们要查找的是名字是 Nala 或 白灰相间的猫的年龄。
XLOOKUP()公式如下:它返回 1,即一只三花 Nala 的年龄。
提醒一下:当我们要求同时满足“名字为 Nala”且“白灰相间”时,公式为:
将
*替换为+,逻辑就发生了改变。若您想进一步释放 Excel 的潜能,可考虑实践导向、体系完善的 Excel Fundamentals 能力路径。
多条件 XLOOKUP() 的可选参数
与单条件下的常规用法一样,在多条件场景中我们同样可以使用函数的附加选项,即
[if_not_found]、[match_mode]和[search_mode]这三个可选参数。下面以简短示例展示在多条件下结合
XLOOKUP()使用这些参数的方法。为简化起见,示例均采用拼接法。无匹配时返回指定文本
这里我们要查找一只黑色 Nala 的年龄——该猫在表中并不存在:
此时,我们在
XLOOKUP()公式中加入可选参数[if_not_found],为其指定无匹配时要返回的文本:函数确实返回了指定文本:
No cat is found。如果未提供文本,函数会返回#N/A。返回近似匹配
比如,我们要查找一只三花 Nala 的年龄,但不确定表中颜色写作 "Tricolor" 还是 "Tricolour"。这时需使用基于通配符的近似匹配,并将
[match_mode]参数设为 2。在上表中,我们使用了星号(*)作为通配符,表示任意数量字符(包括 0)。更多通配符可参见 Microsoft Office 的文档。
此处的
XLOOKUP()公式为:其结果为 1,即表中首个(也是唯一一个)三花 Nala 的年龄。
注意,公式中的参数 2 表示我们要进行近似匹配,而不是查找颜色为 "Tricolo*r" 的 Nala。在本例中,星号匹配到了 “Tricolor”,同样也会匹配 “Tricolour” 或例如 “Tricolooor”。
执行反向搜索
让我们重复最开始的练习——查找白灰相间 Nala 的年龄——但这次从最后一项开始搜索。
为此,需要将
[search_mode]设为 -1,如下:函数返回 7,即从查找数组末尾开始找到的首个白灰相间 Nala 的年龄。
XLOOKUP() 与 INDEX()、MATCH() 的对比
在旧版 Excel 中,如需实现与多条件
XLOOKUP()类似的功能,通常要组合INDEX()与MATCH()。这里不展开两者的语法,仅对比如何用旧方法INDEX()+MATCH()和新方法XLOOKUP()来查找首个白灰相间 Nala 的年龄(单元格引用可参考前表):尽管参数看上去有些相似,但采用
XLOOKUP()的主要优势包括:仅用一个函数即可完成,无需函数组合。
在适用时可采用更直观的拼接法。
可使用可选参数(
MATCH()不具备这些参数)。