MATCH 是 EXCEL 中30個必學函數之一,用於查找特定值在某個範圍中的位置,特別適合在需要動態查找數據位置或匹配資料時使用。
本文將會用 5 分鐘的時間,教你 MATCH 函數的基本用法、結合 INDEX 函數的進階應用,以及常見錯誤提示等。
那麼我們就開始吧!
MATCH 函數用法
MATCH 函數用於查找特定值在某個範圍中的位置,以下是 MACTH 的函數說明:
=MACTH ( lookup_value , lookup_array , [match_type] )
引數名稱 | 解釋 |
---|---|
lookup_value | 查找資料名稱 |
lookup_array | 查找資料範圍 |
[match_type] | 資料比對方式(選填,可輸入 0 / 1 / -1) |
使用範例:利用 MATCH 函數回傳「蔡璇甫」位於資料範圍中的第幾列:
=MATCH ( E2 , A2:A6 , 0 )
引數名稱 | 解釋 | 範例 |
---|---|---|
lookup_value | 查找資料名稱 | E2(蔡璇甫) |
lookup_array | 查找資料範圍 | A2:A6 |
[match_type] | 資料比對方式(選填,可輸入 0 / 1 / -1) | 0(完全符合) |
接下來,我們來看看 MATCH 函數 3 個引數的詳細規則與限制。
1. lookup_value(查找資料名稱)
第一個引數要數入的是「查找資料名稱」,資料名稱可以用「文字」的方式輸入:
=MATCH ( “蔡璇甫”
也可以用「參照儲存格」的方式輸入:
=MATCH ( E2
2. lookup_array(查找資料範圍)
第二個引數要數入的是「查找資料範圍」,資料範圍只能拉一欄或一列,如果超過,則會顯示 #N/A! 錯誤提示:
=MATCH ( E2 , A2:C6 , 0 )
當資料是垂直的,我們範圍就拉一欄:
=MATCH ( E2 , A2:A6
當資料是橫向的,我們範圍就拉一列:
=MATCH ( B6 , B1:F1
3. [match_type](資料比對方式)
MATCH 函數的第三個引數總共有 3 種資料比對方式可以選擇,以下是 3 種資料比對方式的解釋:
[match_type] | 比對方式 | 解釋 |
---|---|---|
0 | 完全符合 | 尋找第一個完全等於資料的值 |
1 | 部分符合 | 尋找小於或等於查找資料的最大值(需升序排序) |
-1 | 部分符合 | 尋找大於或等於查找資料的最小值(需降序排序) |
0:尋找第一個完全等於資料的值
0 是 MATCH 最常用的比對方式,用於尋找資料中第一個完全等於查找資料的值。
延續前面的例子,我們希望查找的是完全等於「蔡璇甫」的資料:
=MATCH ( E2 , A2:A6 , 0 )
MATCH 函數就會回傳「2」,代表「蔡璇甫」是在資料中的第 2 列。
1:尋找小於或等於查找資料的最大值(需升序排序)
在第三個引數中輸入「1」,MATCH 函數會找尋範圍中最接近查找資料,但又不比查找資料大的值。
使用範例:利用 MATCH 函數找出國文分數最接近 60 分,但沒有超過 60 分的人在第幾列:
=MATCH ( 60 , B2:B6 , 1 )
MATCH 函數就會回傳「3」,代表最接近 60 分,但沒有超過 60 分的分數(也就是 52)在範圍中的第 3 列。
注意!第三個引數輸入「1」時,資料一定要按升序排序(越來越大),否則回傳的值會跟預期的結果不同喔!
-1:尋找大於或等於查找資料的最小值(需降序排序)
在第三個引數中輸入「-1」,MATCH 函數會找尋範圍中最接近查找資料,但又不比查找資料小的值。
使用範例:利用 MATCH 函數找出英文分數最接近 60 分,而且超過 60 分的人在第幾列:
=MATCH ( 60 , C2:C6 , -1 )
MATCH 函數就會回傳「4」,代表最接近 60 分,而且超過 60 分的分數(也就是 62)在範圍中的第 4 列。
注意!第三個引數輸入「-1」時,資料一定要按降序排序(越來越小),否則回傳的值會跟預期的結果不同喔!
MATCH 進階用法 – 結合 INDEX 查找資料
以下是 MATCH+INDEX 相較於 VLOOKUP 的優點:
- 可以查找左邊的資料
- 可以自由新增或刪除資料的欄列而不會出現錯誤提示
- 運行速度較 VLOOKUP 快(在資料有上萬筆時這個優點就會很明顯)
直式資料範例
假設我們想要查找「蔡璇甫」的英文成績,可以先利用 MATCH 查找到「蔡璇甫」位於資料第幾列,再透過 INDEX 回傳該列英文欄的資料。
因此,我們先利用 MATCH 函數找出「蔡璇甫」在資料中的第幾列:
=MATCH ( E2 , A2:A6 , 0 )
查找出「蔡璇甫」在資料的第 4 列後,接下來我們就要利用 INDEX 函數回傳該列英文欄的資料。
以下是 INDEX 函數的說明:
=INDEX ( array , row_num , [column_num] )
引數名稱 | 解釋 |
---|---|
array | 資料範圍 |
row_num | 回傳第幾列(垂直往下數) |
[column_num] | 回傳第幾欄(水平往右數) |
剛剛 MATCH 得到的列數,便可以放進 INDEX 第 2 個引數中,並且在第 3 個引數中輸入回傳該列的第 3 欄:
=INDEX ( A2:C6 , MATCH(E2,A2:A6,0) , 3 )
先透過 MATCH 查找到「蔡璇甫」位於資料第幾列,再利用 INDEX 回傳該列第 3 欄的資料,就可以輕鬆達到 VLOOKUP 查找資料的效果拉!
橫式資料範例
如果資料是橫的,也同樣可以使用 MATCH+INDEX 查找資料。
先利用 MATCH 函數找出「蔡璇甫」在資料中的第幾欄:
=MATCH ( B6 , B1:F1 , 0 )
抓出第幾欄之後,就可以放進 INDEX 的第三個引數中,並設定回傳英文列:
=INDEX ( B1:F3 , 3 , MATCH(B6,B1:F1,0) )
MATCH 常見錯誤
- #N/A:當 MATCH 無法找到匹配的資料時,或者查找範圍超過一欄或一列,就會返回 #N/A 錯誤。
- #NAME?:通常是由於函數名稱拼寫錯誤造成的(如將 MATCH 打錯成了 MATHC)
- #REF!:如果引用的儲存格無效(如引用了一個已被刪除的範圍),Excel 就會顯示 #REF! 錯誤。