文章目录
- MATCH函数的基本含义: MATCH函数用于在指定区域内查找特定值,并返回该值在区域中的相对位置(指定范围的行序号或列序号)。它是Excel和WPS表格中实现动态定位的根基函数,常与INDEX、OFFSET等函数组合使用。 match函数的语法图如下所示: 其完整表达式为:=match(查找值,查询区域,匹配类型) 微软Office LTSC 2021专业增强版 简体中文批量许可版 2024年09月更新 类型:办公软件 大小:2.2GB 语言:简体中文 时间:2024-09-12 查看详情 MATCH函数的公式结构也够简单: =MATCH(查找值, 查找区域, [匹配模式]) 查找值:要搜索的内容(文本、数值、单元格引用) 查找区域:单行或单列的数据范围 匹配模式(可选): 0:精确匹配(最常用) 1:升序模糊匹配(区域必须升序排列) -1:降序模糊匹配(区域必须降序排列) 如果第三参数省略默认为“1”:升序模糊匹配。 它包含3个参数,第1参数为查找值,第2参数为查询区域,第3参数是匹配类型。 其含义是返回查询值在特定顺序下的数组中的位置。所以从这个定义来看,它有一定的前提条件,即数据区域默认执行升序排序!这一点是我们在日常match函数应用中容易忽视的细节。 它的通俗含义则是返回查找值在列表中的位置,结果会返回一个数字。 这里我们需要了解match函数第3参数的两种匹配类型,分别为精确匹配和近似匹配,用数字来表示则为0和1. 所谓精确匹配即只查询与查找值相同的值,而近似匹配它会在列表不包含该查找值时,返回与其相近的值。 这里我们要查询日期为“2023/11/20”的最低价,如果使用vlookup函数来查询,其关键一步是要确定要返回的结果位于区域中的第几列,当数据量不大时,可以直接数出结果列的位置,但这里我们将使用match函数来快速返回要返回结果的列序号。 根据match函数的语法,我们在其第1参数查询值输入“H1”单元格地址,第2参数查询区域即要在哪个单元格区域中查询该值,输入为第1行标题行的数据单元格区域,第3参数是匹配类型,输入0则为精确匹配。 所以公式为: =MATCH(H1,A1:E1,0) 公式得到的结果为4,即该查询值在标题行中的位置为第4个数据。 此时我们将这个match函数公式嵌套到vlookup函数中,并作为它的第3参数要返回的列号。
- 这个函数组合是excel中应用频率非常高的引用公式,它的含义就是利用match函数确定要返回的指定列序号,然后通过vlookup函数执行数据查询。 我们直接输入公式: =VLOOKUP(G2,A1:E245,MATCH(H1,A1:E1,0),0) vlookup函数的表达式为:=vlookup(查找值,引用区域,返回列,匹配类型) 关于vlookup函数的具体公式应用这里不作详解,我们只要清楚match函数在其中是作为第3参数来返回一个列序号的数字,使vlookup函数在引用区域的对应列中返回要查询的数据!
- 当我们使用index函数来查询特定日期的指定价格,比如开盘价或最低价,则需要执行两次match函数的嵌套。 因为index函数的表达式是:=index(引用区域,行序号,列序号) 根据其语法表达,它需要返回两个为数字的参数值,既然列序号可以通过match函数得到,那么同理也可以使用match函数来计算指定值在一列中的位置。 所以我们直接输入公式: =INDEX(A1:E245,MATCH(G10,A1:A245,0),MATCH(H9,A1:E1,0)) 这个公式第1个match函数是查询指定日期在日期列中的位置,第2个match函数是查询指定价格在标题行中的位置。
- 列标题的动态定位 比如我们想要确定以“姓名”为名称的列标题位于所选表格区域B1:D4的第几列位置(列序号)。 可以这样简单的输入函数公式: =MATCH("姓名",B1:D1,0) 即查找文本值“姓名”在B1:D1单行中的精确匹配位置,很明显位于第2个单元格中,所以位置就是列号2。 因为在参数介绍中已经明确表明,MATCH函数的第一参数不仅可以是文本值,也可以是单元格引用: =MATCH(C1,B1:D1,0) 所以我们可以将查找值文本值“姓名”用C1来代替。
- 行标题的动态定位 这个案例与上一个案例(职场常见办公场景1)是类似的概念。只不过是把在行区域中查找变成了在列区域中查找罢了。 比如我们想要确定以“销量”为名称的行标题位于所选表格区域B1:B3的第几行位置(行序号)。 我们可以这样简单输入函数公式: =MATCH("销量",B1:B3,0) 即查找文本值“销量”在B1:B3单列中的精确匹配位置,很明显位于第3个单元格中,所以位置就是行号3。 职场常见办公场景3: 多条件位置查找 比如我们想要查找月份“3月”的姓名“李四”位于所选表格区域B1:D5的第几行。 可以这行输入函数公式: =MATCH(1,(B1:B5="3月")*(C1:C5="李四"),0) 将两个条件用乘号连接表示同时满足成立: (B1:B5="3月")*(C1:C5="李四") (B1:B5="3月")会返回由逻辑值TRUE和FALSE组成的数组: {FALSE;FALSE;TRUE;TRUE;FALSE} (C1:C5="李四")会返回由逻辑值TRUE和FALSE组成的数组: {FALSE;TRUE;TRUE;FALSE;FALSE} 两者相乘将会转换为由0和1组成的数组: {0;0;1;0} 数组中的元素“1”则代表两个条件同时成立时的位置。 MATCH函数用查找值“1”,在数组{0;0;1;0}中查找,返回位置“3”。
- 反向查找最后出现的位置 比如A列中的省份名称可能包含重复的数据,我们想要查找“河北”最后出现的单元格位置在第几行。 我们可以这样输入函数公式: =MATCH(2,1/(A:A="河北")) 省略第3参数默认为升序模糊匹配,会查找小于等于查找值最接近的值。 条件判断: A:A="河北"生成由逻辑值TRUE(1)和逻辑值FALSE(0)组成的数组。 数组转换: 1/(A:A="河北")将逻辑值TRUE转换为1,逻辑值FALSE转换为错误值#DIV/0!。 匹配逻辑: MATCH(2, …)会在转换后的数组中查找最后一个1的位置,因为2大于1,且所有1均小于2。所以最后一个1所在的“河北”位置位于A列的第5个单元格。
- 近似匹配 比如我们有一个销量区域对照表:销量小于100,没有折扣;销量大于等于100小于200,折扣为3%;销量大于等于200小于300,折扣为7%;销量大于等于300,折扣为12%。 我们可以这样输入函数公式: =MATCH(D3,A2:A4,1) 因为MATCH函数第三参数是1,所以查找区域A2:A4销量必须升序排序。 以D3单元格的销量“215”举例,查找值“215”在A2:A4中不存在,则会返回小于等于215的最大值(销量200)所在的行为“2”。 继续加个INDEX函数: =INDEX(B2:B4,MATCH(D3,A2:A4,1)) 确定B2:B4区域内第2行第1列(与参数1重合省略)交叉位置的折扣值“7%”。 这里值得注意的是当销量小于100时,也就是没有折扣,会返回错误值: =IFERROR(INDEX(B2:B4,MATCH(D3,A2:A4,1)),"0") 嵌套一个IFERROR函数对可能返回的错误值(0折扣)显示空值即可。
- 逆向查询(最常见的案例) 我们想要根据“产品”从右向左查询“编码”。 可以这样输入函数公式: =MATCH(D3,B2:B4,0) 用MATCH函数查找D3单元格“冰箱”在B2:B4区域的精准位置为2。 最后用INDEX函数外嵌: =INDEX(A2:A4,MATCH(D3,B2:B3,0)) INDEX函数查找A2:A4区域内(编码列)第2行第1列(与编码列重合省略)的交叉位置值为“a2”。 推荐阅读:真的太厉害了! 万能的Alt键在Excel中的10个神奇用法
match函数是excel常见的引用函数,但它与vlookup、index等引用函数不同,它不是查询某个值在另一区域中的对应数据,而是返回某个值在某个区域的位置。但也正因为match函数的这个特性,它通常与vlookup和index函数等进行组合搭配使用,能够应对日常工作中的大量数据引用场景。
下面作者将进行match函数基础语法的讲解,和“match+vlookup”及“match+index”两种最常见函数组合公式应用。

MATCH函数的基本含义:
MATCH函数用于在指定区域内查找特定值,并返回该值在区域中的相对位置(指定范围的行序号或列序号)。它是Excel和WPS表格中实现动态定位的根基函数,常与INDEX、OFFSET等函数组合使用。
match函数的语法图如下所示:

其完整表达式为:=match(查找值,查询区域,匹配类型)

微软Office LTSC 2021专业增强版 简体中文批量许可版 2024年09月更新
- 类型:办公软件
- 大小:2.2GB
- 语言:简体中文
- 时间:2024-09-12
查看详情
MATCH函数的公式结构也够简单:
=MATCH(查找值, 查找区域, [匹配模式])
- 查找值:要搜索的内容(文本、数值、单元格引用)
- 查找区域:单行或单列的数据范围
匹配模式(可选):
- 0:精确匹配(最常用)
- 1:升序模糊匹配(区域必须升序排列)
- -1:降序模糊匹配(区域必须降序排列)
如果第三参数省略默认为“1”:升序模糊匹配。

它包含3个参数,第1参数为查找值,第2参数为查询区域,第3参数是匹配类型。
其含义是返回查询值在特定顺序下的数组中的位置。所以从这个定义来看,它有一定的前提条件,即数据区域默认执行升序排序!这一点是我们在日常match函数应用中容易忽视的细节。
它的通俗含义则是返回查找值在列表中的位置,结果会返回一个数字。
这里我们需要了解match函数第3参数的两种匹配类型,分别为精确匹配和近似匹配,用数字来表示则为0和1.
所谓精确匹配即只查询与查找值相同的值,而近似匹配它会在列表不包含该查找值时,返回与其相近的值。
这里我们要查询日期为“2023/11/20”的最低价,如果使用vlookup函数来查询,其关键一步是要确定要返回的结果位于区域中的第几列,当数据量不大时,可以直接数出结果列的位置,但这里我们将使用match函数来快速返回要返回结果的列序号。
根据match函数的语法,我们在其第1参数查询值输入“H1”单元格地址,第2参数查询区域即要在哪个单元格区域中查询该值,输入为第1行标题行的数据单元格区域,第3参数是匹配类型,输入0则为精确匹配。
所以公式为:
=MATCH(H1,A1:E1,0)

公式得到的结果为4,即该查询值在标题行中的位置为第4个数据。
此时我们将这个match函数公式嵌套到vlookup函数中,并作为它的第3参数要返回的列号。
这个函数组合是excel中应用频率非常高的引用公式,它的含义就是利用match函数确定要返回的指定列序号,然后通过vlookup函数执行数据查询。
我们直接输入公式:
=VLOOKUP(G2,A1:E245,MATCH(H1,A1:E1,0),0)

vlookup函数的表达式为:=vlookup(查找值,引用区域,返回列,匹配类型)
关于vlookup函数的具体公式应用这里不作详解,我们只要清楚match函数在其中是作为第3参数来返回一个列序号的数字,使vlookup函数在引用区域的对应列中返回要查询的数据!
当我们使用index函数来查询特定日期的指定价格,比如开盘价或最低价,则需要执行两次match函数的嵌套。
因为index函数的表达式是:=index(引用区域,行序号,列序号)
根据其语法表达,它需要返回两个为数字的参数值,既然列序号可以通过match函数得到,那么同理也可以使用match函数来计算指定值在一列中的位置。
所以我们直接输入公式:
=INDEX(A1:E245,MATCH(G10,A1:A245,0),MATCH(H9,A1:E1,0))

这个公式第1个match函数是查询指定日期在日期列中的位置,第2个match函数是查询指定价格在标题行中的位置。
列标题的动态定位
比如我们想要确定以“姓名”为名称的列标题位于所选表格区域B1:D4的第几列位置(列序号)。
可以这样简单的输入函数公式:
=MATCH("姓名",B1:D1,0)
即查找文本值“姓名”在B1:D1单行中的精确匹配位置,很明显位于第2个单元格中,所以位置就是列号2。

因为在参数介绍中已经明确表明,MATCH函数的第一参数不仅可以是文本值,也可以是单元格引用:
=MATCH(C1,B1:D1,0)
所以我们可以将查找值文本值“姓名”用C1来代替。

行标题的动态定位
这个案例与上一个案例(职场常见办公场景1)是类似的概念。只不过是把在行区域中查找变成了在列区域中查找罢了。
比如我们想要确定以“销量”为名称的行标题位于所选表格区域B1:B3的第几行位置(行序号)。
我们可以这样简单输入函数公式:
=MATCH("销量",B1:B3,0)
即查找文本值“销量”在B1:B3单列中的精确匹配位置,很明显位于第3个单元格中,所以位置就是行号3。

职场常见办公场景3:
多条件位置查找
比如我们想要查找月份“3月”的姓名“李四”位于所选表格区域B1:D5的第几行。
可以这行输入函数公式:
=MATCH(1,(B1:B5="3月")*(C1:C5="李四"),0)

将两个条件用乘号连接表示同时满足成立:
(B1:B5="3月")*(C1:C5="李四")
(B1:B5="3月")会返回由逻辑值TRUE和FALSE组成的数组:
{FALSE;FALSE;TRUE;TRUE;FALSE}
(C1:C5="李四")会返回由逻辑值TRUE和FALSE组成的数组:
{FALSE;TRUE;TRUE;FALSE;FALSE}
两者相乘将会转换为由0和1组成的数组:
{0;0;1;0}
数组中的元素“1”则代表两个条件同时成立时的位置。
MATCH函数用查找值“1”,在数组{0;0;1;0}中查找,返回位置“3”。

反向查找最后出现的位置
比如A列中的省份名称可能包含重复的数据,我们想要查找“河北”最后出现的单元格位置在第几行。
我们可以这样输入函数公式:
=MATCH(2,1/(A:A="河北"))
省略第3参数默认为升序模糊匹配,会查找小于等于查找值最接近的值。
条件判断:
- A:A="河北"生成由逻辑值TRUE(1)和逻辑值FALSE(0)组成的数组。
数组转换:
- 1/(A:A="河北")将逻辑值TRUE转换为1,逻辑值FALSE转换为错误值#DIV/0!。
匹配逻辑:
- MATCH(2, …)会在转换后的数组中查找最后一个1的位置,因为2大于1,且所有1均小于2。所以最后一个1所在的“河北”位置位于A列的第5个单元格。

近似匹配
比如我们有一个销量区域对照表:销量小于100,没有折扣;销量大于等于100小于200,折扣为3%;销量大于等于200小于300,折扣为7%;销量大于等于300,折扣为12%。
我们可以这样输入函数公式:
=MATCH(D3,A2:A4,1)
因为MATCH函数第三参数是1,所以查找区域A2:A4销量必须升序排序。
以D3单元格的销量“215”举例,查找值“215”在A2:A4中不存在,则会返回小于等于215的最大值(销量200)所在的行为“2”。

继续加个INDEX函数:
=INDEX(B2:B4,MATCH(D3,A2:A4,1))
确定B2:B4区域内第2行第1列(与参数1重合省略)交叉位置的折扣值“7%”。

这里值得注意的是当销量小于100时,也就是没有折扣,会返回错误值:
=IFERROR(INDEX(B2:B4,MATCH(D3,A2:A4,1)),"0")
嵌套一个IFERROR函数对可能返回的错误值(0折扣)显示空值即可。

逆向查询(最常见的案例)
我们想要根据“产品”从右向左查询“编码”。
可以这样输入函数公式:
=MATCH(D3,B2:B4,0)
用MATCH函数查找D3单元格“冰箱”在B2:B4区域的精准位置为2。

最后用INDEX函数外嵌:
=INDEX(A2:A4,MATCH(D3,B2:B3,0))
INDEX函数查找A2:A4区域内(编码列)第2行第1列(与编码列重合省略)的交叉位置值为“a2”。

推荐阅读:真的太厉害了! 万能的Alt键在Excel中的10个神奇用法