2007年1月30日 星期二

[EXCEL] 部分符合查表法

 
  相關函數IF() / LARGE() / INDEX() / 陣列公式

  之前提到一些查表法,包括「任意鍵值查表法」,「多重條件查表法」等,今天再來一個「部分符合查表法」。

  一般的查表,鍵值必須完全符合才能查出來,所以沒有辦法用 "book" 當鍵值去查到 "This is a book"。今天的公式,則可以突破這個限制。它的原理是,先將原始資料做一些運算,再把運算結果拿來和鍵值比對

##CONTINUE##
  因為會用到陣列公式,所以還不懂陣列公式的朋友,可以先參考另一篇文章:淺談陣列公式

  如下圖,是學號和姓名的對照表,利用之前說過的 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 欄資料,此為最後結果。

0 意見: