MATCH在英文里是匹配的意思,但實(shí)際上它只是一個(gè)單線偵察兵。其主要功能是在某個(gè)單列或單行的數(shù)據(jù)范圍內(nèi)搜索指定值,并返回該值在查詢范圍中首個(gè)匹配結(jié)果的位置序號(hào)。
其官方語(yǔ)法如下:
=MATCH(lookup_value, lookup_array,[match_type])
即
=MATCH(找誰(shuí)?在哪找?怎么個(gè)找法?)
前面兩個(gè)參數(shù)是必須的,第三個(gè)參數(shù)是可選的,為指定匹配模式,有三個(gè)選項(xiàng),-1、0、1。
如果是-1,MATCH函數(shù)要求查詢范圍的數(shù)據(jù)必須降序排列,然后會(huì)從中查找大于或等于查詢值的最小值。
如果是1,MATCH函數(shù)要求查詢范圍的數(shù)據(jù)必須升序排列,然后從中查找小于或等于查詢值的最大值。
如果是0,MATCH函數(shù)對(duì)查詢范圍的數(shù)據(jù)并沒(méi)有排序的要求,它會(huì)從中查找等于查詢值的第一個(gè)值……還記得嗎?在VLOOKUP函數(shù)里,我們說(shuō)0就是零失誤精確匹配的意思,在這里同樣如此。
需要特別說(shuō)明的是,當(dāng)MATCH函數(shù)第三參數(shù)省略時(shí),默認(rèn)匹配模式為1,而不是0,不是0,不是0(重要的事情說(shuō)三遍)
不管是-1還是1,都很少用,所以可先無(wú)視它;咱們需要掌握的只是0失誤精確匹配模式。
2
我們說(shuō)MATCH函數(shù)主要功能在某個(gè)單列或單行的數(shù)據(jù)范圍內(nèi)搜索指定值,并返回該值在查詢范圍中首個(gè)匹配結(jié)果的位置——這句話有兩個(gè)重點(diǎn),一個(gè)是MATCH函數(shù)的查詢范圍只能是單行或單列,另一個(gè)是MATCH函數(shù)返回查詢值在查詢范圍首個(gè)匹配結(jié)果的位置。
如上圖所示的數(shù)據(jù)表,如果我們需要查詢“PPT”在B列中的位置,可以使用公式:
=MATCH("PPT",B:B,0)
MATCH函數(shù)采用精確匹配的查詢模式,按照從上到下的順序查詢B列中的值是否等于“PPT”。
B1不是,B2不是,B3——是。找到結(jié)果啦,查詢結(jié)束。剩下的數(shù)據(jù)MATCH函數(shù)看都不看一眼,更不會(huì)管剩下的數(shù)據(jù)里是不是有第2個(gè)“常用圖表”。
B3在B列中的位置序號(hào)是第3個(gè),因此MATCH函數(shù)返回結(jié)果為3。
換個(gè)公式:
=MATCH("李逵",A1:A6,0)
公式的意思是查詢“李逵”在A1:A6區(qū)域內(nèi)的位置,計(jì)算結(jié)果為2。
猜一猜,下面的公式返回什么結(jié)果?
=MATCH("李逵",A1:B6,0)
公式的意思是在A1:B6單元格區(qū)域,查詢“李逵”的位置。計(jì)算結(jié)果為——錯(cuò)誤值。
有朋友會(huì)想,為什么?。俊袄铄印泵髅髟诓樵兎秶氖琢邪??——我們今天分享的是MATCH函數(shù),不是VLOOKUP函數(shù),它才不管你什么首列不首列,只要查詢范圍不是單行或單列,統(tǒng)統(tǒng)錯(cuò)誤值警告。
3
有一天,你發(fā)現(xiàn)自憐資格都已沒(méi)有,只剩下MATCH不知疲倦的肩膀……
你:不好意思,我想查一下那個(gè)什么pivot在A列中的位置,全名我想不起來(lái)了,就知道有個(gè)pivot ……
MATCH:很愿意為你效勞,我的主人。請(qǐng)輸入以下公式,謝謝。
=MATCH("pivot",A:A,0)
主人,計(jì)算結(jié)果為11,說(shuō)明第一個(gè)包含關(guān)鍵字pivot的數(shù)據(jù)在A列第11行。
主人,星號(hào)是通配符,可以代替0到多個(gè)字符,pivot的意思就是包含pivot的字符串。
你如果覺(jué)得輸入大小寫混合字母會(huì)手疼,也可以輸入以下公式:
=MATCH("QIVOT",A:A,0)
計(jì)算結(jié)果是一樣的。
4
MATCH作為輔助函數(shù),通常都是配合其他函數(shù)做事,很少作為主力行動(dòng),不過(guò)但凡作為主力,必然都是出彩時(shí)刻。
舉三個(gè)常用的小栗子。
4.1) 判斷某個(gè)值在某個(gè)區(qū)域是否存在。
如下圖所示,需要查詢C列的值在A列是否存在。
D2公式如下:
=IF(ISERROR(MATCH(C2,A:A,0)),"不存在","存在")
MATCH(C2,A:A,0)部分,查詢C2的值在A列中位置,如果返回錯(cuò)誤值,則說(shuō)明A列不存在C2,于是返回指定字符串“不存在”,否則返回“存在”。
當(dāng)然,也可以使用我們?cè)贑OUNTIF函數(shù)教程里講過(guò)的下面這個(gè)公式。
=IF(COUNTIF(A:A,C2),"存在","不存在")
兩個(gè)公式有什么區(qū)別?
首先,MATCH函數(shù)的運(yùn)算效率遠(yuǎn)勝于COUNTIF。
COUNTIF屬于完全遍歷的查詢模式,比如它會(huì)將A1:A11區(qū)域里每一個(gè)單元格都找一遍,看看是不是等于"PPT"。MATCH函數(shù)就不一樣,它在A4單元格找到"PPT"就不會(huì)再找下去了。
這就好比走路,一個(gè)人走1000米才完成任務(wù),一個(gè)人走300米就搞定了,當(dāng)然是后者效率更高。
不過(guò)MATCH不支持多行多列數(shù)據(jù)范圍的查詢方式,COUNTIF就沒(méi)有這個(gè)限制。比如我們需要查詢A:B列內(nèi)是否有個(gè)叫“劉邦”的人……
可以使用=IF(COUNTIF(A:B,"劉邦"),"存在","不存在")
但不能使用=IF(ISERROR(MATCH("劉邦",A:B,0)),"不存在","存在")
以上↓↓↓:
判斷一個(gè)值在一個(gè)區(qū)域內(nèi)是否存在時(shí),如果統(tǒng)計(jì)范圍是單行或單列,更推薦使用MATCH函數(shù),如果是多行多列,則COUNTIF函數(shù)是唯一候選人。
4.2)自定義規(guī)則排名
如下圖所示,A列為姓名,B列為職位,需要按照E列所示的職務(wù)大小進(jìn)行降序排列。
由于Excel對(duì)文本的排序方式,自有規(guī)則,并不看經(jīng)理的臉色,所以直接排序并不能達(dá)到我們的目的,經(jīng)理會(huì)成為墊底的存在。
此時(shí)通常使用輔助列排序的方式:
C列為輔助列,C2輸入以下公式
=MATCH(B2,E:E,0)
MATCH函數(shù)返回B2在E列中的位置序號(hào),依此排序,即為結(jié)果。
順序操作其它行的情況
將排列數(shù)據(jù)按照升序排列即可根據(jù)目標(biāo)序列進(jìn)行排名