Match函数的那些小伎俩!(match 函数怎么用)
大家好,今天我们来讲讲Excel中的MATCH函数,MATCH这个查找类函数太常用了,它是很多其他函数组合嵌套的好伴侣,因为太基础,我们往往会忽视它的重要性。
MATCH函数的基本含义:
MATCH函数用于在指定区域内查找特定值,并返回该值在区域中的相对位置(指定范围的行序号或列序号)。它是Excel和WPS表格中实现动态定位的根基函数,常与INDEX、OFFSET等函数组合使用。
MATCH函数的公式结构也够简单:
=MATCH(查找值, 查找区域, [匹配模式])
查找值:要搜索的内容(文本、数值、单元格引用)
查找区域:单行或单列的数据范围
匹配模式(可选):
0:精确匹配(最常用)
1:升序模糊匹配(区域必须升序排列)
-1:降序模糊匹配(区域必须降序排列)
如果第三参数省略默认为“1”:升序模糊匹配。
职场常见办公场景1:
列标题的动态定位
比如我们想要确定以“姓名”为名称的列标题位于所选表格区域B1:D4的第几列位置(列序号)。
可以这样简单的输入函数公式:
=MATCH("姓名",B1:D1,0)
即查找文本值“姓名”在B1:D1单行中的精确匹配位置,很明显位于第2个单元格中,所以位置就是列号2。
因为在参数介绍中已经明确表明,MATCH函数的第一参数不仅可以是文本值,也可以是单元格引用:
=MATCH(C1,B1:D1,0)
所以我们可以将查找值文本值“姓名”用C1来代替。
职场常见办公场景2:
行标题的动态定位
这个案例与上一个案例(职场常见办公场景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”。
职场常见办公场景4:
反向查找最后出现的位置
比如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个单元格。
职场常见办公场景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折扣)显示空值即可。
职场常见办公场景6:
逆向查询(最常见的案例)
我们想要根据“产品”从右向左查询“编码”。
可以这样输入函数公式:
=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”。