MATCH在英文里是匹配的意思,但实际上它只是一个单线侦察兵。其主要功能是在某个单列或单行的数据范围内搜索指定值,并返回该值在查询范围中首个匹配结果的位置序号。
其官方语法如下:
=MATCH(lookup_value, lookup_array,[match_type])
即
=MATCH(找谁?在哪找?怎么个找法?)
前面两个参数是必须的,第三个参数是可选的,为指定匹配模式,有三个选项,-1、0、1。
如果是-1,MATCH函数要求查询范围的数据必须降序排列,然后会从中查找大于或等于查询值的最小值。
如果是1,MATCH函数要求查询范围的数据必须升序排列,然后从中查找小于或等于查询值的最大值。
如果是0,MATCH函数对查询范围的数据并没有排序的要求,它会从中查找等于查询值的第一个值……还记得吗?在VLOOKUP函数里,我们说0就是零失误精确匹配的意思,在这里同样如此。
需要特别说明的是,当MATCH函数第三参数省略时,默认匹配模式为1,而不是0,不是0,不是0(重要的事情说三遍)
不管是-1还是1,都很少用,所以可先无视它;咱们需要掌握的只是0失误精确匹配模式。
2
我们说MATCH函数主要功能在某个单列或单行的数据范围内搜索指定值,并返回该值在查询范围中首个匹配结果的位置——这句话有两个重点,一个是MATCH函数的查询范围只能是单行或单列,另一个是MATCH函数返回查询值在查询范围首个匹配结果的位置。
如上图所示的数据表,如果我们需要查询“PPT”在B列中的位置,可以使用公式:
=MATCH("PPT",B:B,0)
MATCH函数采用精确匹配的查询模式,按照从上到下的顺序查询B列中的值是否等于“PPT”。
B1不是,B2不是,B3——是。找到结果啦,查询结束。剩下的数据MATCH函数看都不看一眼,更不会管剩下的数据里是不是有第2个“常用图表”。
B3在B列中的位置序号是第3个,因此MATCH函数返回结果为3。
换个公式:
=MATCH("李逵",A1:A6,0)
公式的意思是查询“李逵”在A1:A6区域内的位置,计算结果为2。
猜一猜,下面的公式返回什么结果?
=MATCH("李逵",A1:B6,0)
公式的意思是在A1:B6单元格区域,查询“李逵”的位置。计算结果为——错误值。
有朋友会想,为什么啊?“李逵”明明在查询范围的首列啊?——我们今天分享的是MATCH函数,不是VLOOKUP函数,它才不管你什么首列不首列,只要查询范围不是单行或单列,统统错误值警告。
3
有一天,你发现自怜资格都已没有,只剩下MATCH不知疲倦的肩膀……
你:不好意思,我想查一下那个什么pivot在A列中的位置,全名我想不起来了,就知道有个pivot ……
MATCH:很愿意为你效劳,我的主人。请输入以下公式,谢谢。
=MATCH("pivot",A:A,0)
主人,计算结果为11,说明第一个包含关键字pivot的数据在A列第11行。
主人,星号是通配符,可以代替0到多个字符,pivot的意思就是包含pivot的字符串。
你如果觉得输入大小写混合字母会手疼,也可以输入以下公式:
=MATCH("QIVOT",A:A,0)
计算结果是一样的。
4
MATCH作为辅助函数,通常都是配合其他函数做事,很少作为主力行动,不过但凡作为主力,必然都是出彩时刻。
举三个常用的小栗子。
4.1) 判断某个值在某个区域是否存在。
如下图所示,需要查询C列的值在A列是否存在。
D2公式如下:
=IF(ISERROR(MATCH(C2,A:A,0)),"不存在","存在")
MATCH(C2,A:A,0)部分,查询C2的值在A列中位置,如果返回错误值,则说明A列不存在C2,于是返回指定字符串“不存在”,否则返回“存在”。
当然,也可以使用我们在COUNTIF函数教程里讲过的下面这个公式。
=IF(COUNTIF(A:A,C2),"存在","不存在")
两个公式有什么区别?
首先,MATCH函数的运算效率远胜于COUNTIF。
COUNTIF属于完全遍历的查询模式,比如它会将A1:A11区域里每一个单元格都找一遍,看看是不是等于"PPT"。MATCH函数就不一样,它在A4单元格找到"PPT"就不会再找下去了。
这就好比走路,一个人走1000米才完成任务,一个人走300米就搞定了,当然是后者效率更高。
不过MATCH不支持多行多列数据范围的查询方式,COUNTIF就没有这个限制。比如我们需要查询A:B列内是否有个叫“刘邦”的人……
可以使用=IF(COUNTIF(A:B,"刘邦"),"存在","不存在")
但不能使用=IF(ISERROR(MATCH("刘邦",A:B,0)),"不存在","存在")
以上↓↓↓:
判断一个值在一个区域内是否存在时,如果统计范围是单行或单列,更推荐使用MATCH函数,如果是多行多列,则COUNTIF函数是唯一候选人。
4.2)自定义规则排名
如下图所示,A列为姓名,B列为职位,需要按照E列所示的职务大小进行降序排列。
由于Excel对文本的排序方式,自有规则,并不看经理的脸色,所以直接排序并不能达到我们的目的,经理会成为垫底的存在。
此时通常使用辅助列排序的方式:
C列为辅助列,C2输入以下公式
=MATCH(B2,E:E,0)
MATCH函数返回B2在E列中的位置序号,依此排序,即为结果。
顺序操作其它行的情况
将排列数据按照升序排列即可根据目标序列进行排名
网友评论