HI,大家好,我是星光。 今天給大家分享的表格技巧是MATCH函數(shù)。在英文中,它的意思是匹配,常用于搭配其它函數(shù),實現(xiàn)數(shù)據(jù)查詢與統(tǒng)計等。 在之前一篇推文「函數(shù)語法這樣記就簡單了」,咱們聊到MATCH函數(shù)是個腦細胞很簡單的黑老大,動不動就問人你算老幾。 ![]() 比如說,以下公式返回結(jié)果為6,表示'看見星光'在A列第6個出現(xiàn),所以算老六。 =MATCH('看見星光',A:A,0) ![]() MATCH函數(shù)的基本語法▼ =MATCH(查找值,查找范圍,匹配方式)MATCH函數(shù)一共有3個參數(shù),第1個參數(shù)是查找值,第2個參數(shù)是單行或者單列的查找范圍,第3個參數(shù)是查找方式。查找方式又分為3種,絕大部分情況下,我們只會用到其中一種,也就是將它固定設(shè)置為0,表示零失誤精確匹配。 以下舉5個小栗子,一窺 ![]() MATCH函數(shù)最常用的幾種情景。 ▎1,判斷數(shù)據(jù)是否存在 如下圖所示,需要在C列編寫函數(shù)公式,判斷B列的數(shù)據(jù)是否存在于A列。 ![]() 參考公式如下: 公式看不全可以左右拖動... =IF(ISNUMBER(MATCH(B2,A:A,0)), '存在','不存在')MATCH函數(shù)計算B2單元格的內(nèi)容在A列算老幾。如果查有所得,返回一個數(shù)值序列號,比如2,如果查無匹配,則返回錯誤值。 再用ISNUMBER函數(shù)對MATCH的計算結(jié)果進行判斷,如果是數(shù)值則返回'存在',否則返回'不存在'。 =IF(COUNTIF(A:A,B2), '存在','不存在')這題也可以使用如上所示的COUNTIF函數(shù):但通常并不推薦。不推薦的原因是……往下看 ![]() ▎2,等級轉(zhuǎn)換 如下圖所示,C列是評定,需要在D列編寫函數(shù)公式,將其轉(zhuǎn)換為等級形式。其中優(yōu)秀為1級,良好為2級,及格為3級,不及格為4級,勸退為5級。 ![]() 參考公式如下: 公式看不全可以左右拖動... =MATCH(C2, {'優(yōu)秀','良好','及格','不及格','勸退'}, 0)&'級' MATCH函數(shù)會返回查找值在查找范圍中算老幾,剛好符合本題的序列等級的特性。這函數(shù)的查找范圍是一個單行的常量數(shù)組,C2單元格的'及格',在該常量數(shù)組中序列為3,計算結(jié)果即為'3級'。 ▎3,判斷是否重復 如下圖所示,需要在C列編寫函數(shù)公式,判斷B列的姓名是否重復出現(xiàn)(第2次及以上出現(xiàn)為重復,首次為不重復)。 ![]() 參考公式如下: 公式看不全可以左右拖動... =IF( MATCH(B2,B$2:B$15,0)=ROW(A1), '','重復')MATCH函數(shù)返回B2的內(nèi)容在B2:B15區(qū)域首次出現(xiàn)時的序列號。例如,B2單元格的'看見星光'首次出現(xiàn)時序列為1。然后判斷該結(jié)果,是否和自然序列號相等。如果相等,則為首次出現(xiàn),否則為重復出現(xiàn)。 如下圖所示,C列是自然序列,D列是MATCH函數(shù)返回的序列。 ![]() 該案例也可以使用以下公式: =IF(COUNTIF(B$2:B2,B2)=1, '','重復')但COUNTIF屬于全遍歷函數(shù),它會從頭到尾把所有的數(shù)據(jù)都找一遍,計算效率偏低,而MATCH函數(shù)屬于找到即止型,當找到第一個目標結(jié)果后,就不會再往下匹配計算了。另外,當MATCH函數(shù)的查找范圍相同時,系統(tǒng)會建立引用緩存,避免反復調(diào)取單元格對象,計算效率屬于函數(shù)世界中的佼佼者。 ▎4,逆向查詢 MATCH函數(shù)經(jīng)常和INDEX函數(shù)搭配使用,可以解決逆向查詢的問題。 如下圖所示,A:C列是成績表,需要在F列編寫函數(shù)公式,查詢E列人名所屬的班級。 ![]() 參考公式如下: 公式看不全可以左右拖動... =INDEX(A:A,MATCH(F2,B:B,0))MATCH函數(shù)返回F2單元格的內(nèi)容在B列首次出現(xiàn)時的序列,INDEX按圖索驥,返回A列對應(yīng)序列的結(jié)果。 和VLOOKUP等函數(shù)一樣,MATCH函數(shù)也支持使用通配符。以下公式可以返回B列姓名包含E列關(guān)鍵字的所屬班級: =INDEX(A:A, MATCH('*'&E2&'*',B:B,0)) ▎5,交叉表查詢 MATCH函數(shù)也經(jīng)常搭配VLOOKUP等函數(shù)實現(xiàn)動態(tài)標題查詢。 如下圖所示,A~D是數(shù)據(jù)源,需要根據(jù)F列的人名和G1:H1區(qū)域的標題名稱查詢對應(yīng)的成績。 ![]() G2單元格輸入以下公式,復制填充到G2:H10區(qū)域。 =VLOOKUP($F2,$A:$D, MATCH(G$1,$A$1:$D$1,0),0) |
|