相關函數:IF() / LARGE() / INDEX() / 陣列公式
之前提到一些查表法,包括「任意鍵值查表法」,「多重條件查表法」等,今天再來一個「部分符合查表法」。
一般的查表,鍵值必須完全符合才能查出來,所以沒有辦法用 "book" 當鍵值去查到 "This is a book"。今天的公式,則可以突破這個限制。它的原理是,先將原始資料做一些運算,再把運算結果拿來和鍵值比對。
如下圖,是學號和姓名的對照表,利用之前說過的 VLOOKUP(),我們可以用「完整的學號」查出姓名。那麼,可不可以用「部分的學號」來查出姓名?例如,只輸入「05」,來查出 A30305 的「周五」?
可以的,E2 公式如下:
=INDEX(B2:B11,LARGE(IF(RIGHT(A2:A11,2)=D2,ROW(A2:A11)-1,""),1))
這是陣列公式,記得要用 CTRL+SHIFT+ENTER 來完成輸入。
公式說明:
- RIGHT(A2:A11,2)=D2 這是陣列公式,將 A 欄的最右邊兩個字元取出來,和 D2 做比對。
- IF(RIGHT(...),ROW(A2:A11)-1,"") 如果比對成功,則傳回列數-1,否則傳回空白。
- LARGE(IF(...),1) 從比對結果傳回的列數中,找出最大值。如果有多個結果符合,傳回列數最大的;如果沒有人符合,會造成 #NUM! 錯誤。
- INDEX(B2:B11,LARGE(...)) 根據傳回的列數,找出相對應的 B 欄資料,此為最後結果。