Excel INDEX MATCH 查表
MATCH 找出某個值在清單裡的位置,INDEX 依位置從範圍取值。把 MATCH 放進 INDEX 裡,就得到一個不在乎資料方向的查表公式——金鑰在右邊時,VLOOKUP 給不了這個答案。
INDEX MATCH 的語法
這是把兩個函數疊在一起用:MATCH 回報「第幾格」,INDEX 回報那個位置上的值。整個組合才是一次查表,單獨看任何一半都不成立。
你要取出的值所在的那一欄(或那一列),例如 C2:C5。它不必包含鍵欄,在左邊或右邊都可以。
要找的值、要搜尋的範圍(鍵欄)、以及比對方式。比對方式一定要寫 0(完全相符);省略會變成 1(近似相符),排序一亂就回傳錯的列。
查表演例
金鑰在左邊時,用 INDEX MATCH 取出產品單價。
| 產品代碼 | 品名 | 單價 |
|---|---|---|
| SKU-101 | 鍵盤 | 49.00 |
| SKU-102 | 滑鼠 | 19.50 |
| SKU-103 | 螢幕 | 24.99 |
| SKU-104 | 擴充座 | 89.00 |
MATCH 回傳 3(SKU-103 在 A2:A5 的第 3 列),INDEX 再取 C2:C5 的第 3 格,得到 24.99。回傳範圍一次指名,單價在左邊還是右邊都不影響結果。
同時用列與欄定位(二維查表)
要同時用列標題與欄標題定位時,就放兩個 MATCH:第一個找列,第二個找欄。
| 業務 | Q1 | Q2 | Q3 |
|---|---|---|---|
| 小王 | 120 | 150 | 180 |
| 小李 | 90 | 110 | 140 |
| 小陳 | 200 | 180 | 210 |
列的 MATCH 回傳 2(小李)、欄的 MATCH 回傳 3(Q3),於是取 B2:D4 的第 2 列第 3 欄,得到 140。因為列與欄分開找,把表換個順序也不會壞。
與 VLOOKUP 的比較
同一個查表用 VLOOKUP 寫,要指定「從鍵欄往右算第幾欄」。差別就在這裡——也是插入欄位時會不會出事的關鍵。
| 面向 | VLOOKUP | INDEX MATCH |
|---|---|---|
| 搜尋方向 | 只能往鍵的右邊 | 左右皆可 |
| 插入欄位 | 欄號跟著偏,悄悄算錯 | 指名範圍,不受影響 |
| 回傳欄的寫法 | 從鍵欄數起的欄號 | 直接指名回傳範圍 |
| 可讀性 | 短 | 較長,但意圖明確 |
| 舊版 Excel | 可用 | 可用(XLOOKUP 不可用) |
欄位多、或這張表還有人持續加欄時,INDEX MATCH 比較安全。欄少、只查一次,VLOOKUP 的短就是優點。若環境支援 XLOOKUP,能一個式子同時寫回傳值與找不到時的預設值,XLOOKUP 最短。
INDEX MATCH 最常踩的 4 個陷阱
1. 忘了寫 MATCH 的比對方式
只寫 MATCH(要找的值, 範圍) 時,比對方式是 1(近似相符),範圍沒有遞增排序就會回傳不相干的列。永遠把 0 寫上去。
2. INDEX 與 MATCH 的範圍列數不一致
INDEX 用 C2:C5 卻在 A2:A6 裡找,位置就會整體偏移一格。兩個範圍要同列數、同起始列;若想用整張表,就把 INDEX 的行號補上偏移。
3. 要找的值與鍵的型別不同
一邊是文字 "103"、另一邊是數字 103,就對不上。這是匯入 CSV 之後最常見的症狀,先統一一邊的型別(VALUE 或 TEXT)再查。
4. 陣列多條件只按 Enter
MATCH(1, (A2:A6="北區")*(B2:B6="Q3"), 0) 會產生陣列。舊版 Excel 必須按 Ctrl+Shift+Enter,只按 Enter 會得到 #N/A 或 1。
Excel 與 Google Sheets
Microsoft Excel (365 / Desktop)
Excel 的 INDEX 有 3 個參數(範圍、列、欄),MATCH 也有 3 個(要找的值、範圍、比對方式)。Excel 365 的陣列多條件可直接按 Enter。INDEX 省略列或欄時,會回傳整欄或整列。
Google Sheets
Google Sheets 語法相同,範圍寫法也是 A2:A5,因此 Excel 寫好的公式幾乎可以原樣貼上。
INDEX MATCH 練習
用 INDEX 與 MATCH 從鍵的左側或部分文字取出值。公式要隨每一列變化,不能寫死。
常見問題
INDEX MATCH 和 VLOOKUP 差在哪裡?
VLOOKUP 只能往金鑰右邊取值,而且公式裡存的是欄號,插入一欄就默默算錯。INDEX MATCH 直接指名回傳範圍、另外找位置,所以左右都能查,插入欄位也不會壞。
有 XLOOKUP 了還需要學 INDEX MATCH 嗎?
需要。Excel 2019 與更舊版本沒有 XLOOKUP,和同事共用檔案、或在 Google Sheets 協作時也常遇到。面試仍會問,財務模板也大量使用這個寫法。
INDEX MATCH 怎麼做多條件查詢?
可以串接索引鍵(=INDEX(C2:C6, MATCH(A2&B2, D2:D6&E2:E6, 0))),或用陣列寫法 =INDEX(C2:C6, MATCH(1, (A2:A6="北區")*(B2:B6="Q3"), 0))。舊版 Excel 的陣列寫法要按 Ctrl+Shift+Enter,Excel 365 與 Sheets 不用。