實作VLOOKUP向左轉(1),細說VLOOKUP

VLOOKUP函數的特性與運用實例~

VLOOKUP函數人如其名,Vertical Lookup是也!意為垂直查詢。幾乎是職場上最常面臨且應用廣泛的函數。也是筆者在長年的Excel教育訓練工作領域中,最被常問及的函數之一。此函數的語法若用比較白話的敘述來說明,可描述為:

 
意即將指定的「查詢值」,與[比對表]的首欄裡的每一個儲存格內容,由上而下,逐一比對(因此才名為Vertical Lookup)。
注意,「查詢值」只跟[比對表]的首欄儲存格逐一比對喔!並不會跟[比對表]的其他欄位儲存格進行比對。至於比對的邏輯是必須完全相等(完全符合)才算比對成功,還是只要大於或小於(大約符合)就算比對成功,端賴此函數的第四參數[比對選項]來決定~
例如:下圖範例所示,是一個8欄5列的對照表,描述各種業績金額的各種級距,以及每一個級距所代表的「等第」、應得的獎金「比例」、隸屬的「分級」以及「備註」敘述。

若想知道某一個業績金額,其對應的相關資訊,例如:某業績金額的「等第」為何?獎金「比例」是多少?隸屬的「分級」與「備註」敘述是什麼?這便是典型的VLOOKUP函數應用了。也就是想要查詢的指定業績金額(函數裡的第1個參數),與比對表(函數裡的第2個參數)首欄由上而下的每一個儲存格內容進行比對,比對到符合的等級後,再由左至右,取得比對表第N欄的儲存格內容。
以此範例來說明:
  1. 若想要查詢的值是「800」(第1個參數)
  2. 比對表是已命名為「業績級距表」的儲存格範圍(第2個參數)
  3. 想要查詢的資訊是獎金「比例」也就是比對表由左至右的第3欄 (第3個參數)
  4. 所要進行比對的邏輯比對選項是「完全符合」(第4個參數)
因此,可以撰寫成:
=VLOOKUP(800, 業績級距表,3,False)
將「800」與業績級距表首欄裡的每一個數值相比較,「800」比「0」大、也比「100」大、也比「300」大,而剛好等於「800」,再由此「800」等級由左往右,取得第3欄的儲存格內容,也就是「3.5%」。所以,上述的VLOOKUP函數執行結果會是:0.035
不過,如果要查詢的業績金額是「1250」(第1個參數)呢?
例如:
=VLOOKUP(1250, 業績級距表,3,FALSE)
那麼,此VLOOKUP函數回傳回的結果將會是「#N/A」!
這是因為此VLOOKUP函數裡的第4個參數為False,也就是表明要採用的邏輯比對選項是「完全符合」,因此,必須是一模一樣的數字才算比對成功,而此例的比對表,也就是業績級距表其首欄裡的每一個數值分別定義為「0」、「100」、「300」、「800」、「1000」、「1950」、「3420」與「5000」,而這當中並沒有剛剛好是1250的數值,所以,查詢1250的結果,將會傳回「#N/A」(No value is Available)。
所以,結論是,我們在此範例的使用情境上,第4個參數:邏輯比對選項,應該要採用「大約符合」的比對,並不需要完全符合才算查詢到資料。所以,將函數的撰寫改成:
=VLOOKUP(1250, 業績級距表,3,True)
那麼,此VLOOKUP函數所回傳回的結就不會是「#N/A」了。因為,將「1250」與業績級距表首欄裡的每一個數值相比較,而且採用的是大約符合的比對,得知「1250」比「0」大、也比「300」大、也比「800」大、也比「1000」大,但是並沒有比「1950」大,因此,VLOOKUP函數可以斷定「1250」並不會是屬於「1950」的層級,也就認定是屬於「1000」的層級,此時再由左往右,取得第3欄的儲存格內容,也就是「5.0%」。所以,上述的VLOOKUP函數在查詢1250時的結果會是:0.05。
也正因為是由上而下的逐一比對,因此,當VLOOKUP函數的第4個參數採用的是[大約符合]的比對邏輯時,比對表首欄裡的各儲存格資料內容,由上而下必須是遞增排序,如此,VLOOKUP函數才會運作成功。
 好了,整理一下思緒,我們瞭解到了VLOOKUP函數的特性是:
將查詢值與比對表首欄裡的儲存格資料由上而下逐一比對,然後,再由左至右取得實際所要的儲存格內容。其中,是否比對成功的比對模式,則提供了[完全符合]與[大約符合]兩種比對邏輯。其中,若要進行[大約符合]的比對邏輯時,比對表首欄裡的儲存格內容,由上而下,必須是遞增排序的。此外,比對成功後,取得資料的途徑是從比對成功的層級由左至右取得某一欄的儲存格內容。但是,若比對表的級距資料並不是在首欄,而是位於其他欄位,如下圖所示:
 
比對表共計有五個欄位的資訊,由左至右分別為「地區」、「組別」、「工號」、「姓名」及「年資」,那麼,若要建構一個查詢體系是輸入某人的工號(查詢值)後,要查詢出該工號所屬的地區、組別、姓名或年資時,VLOOKUP函數做得到嗎?由於此次查詢值要進行比較的對象,並非位於比對表的首欄,而是在第3欄位,若是依據VLOOKUP的特性,改成比對表的首欄是「工號」則VLOOKUP函數卻又無法由右至左擷取比對表以外的資料。
 
因此,只要大刀闊斧地改變比對表的結構,如下圖所示,將「工號」移到最左側,再由左至右分別顯示「地區」、「組別」、「姓名」及「年資」,不就可以運用VLOOKUP來查詢資料了嗎?那自是當然!但我們就是要想辦法,在不異動比對表的結構下,仍能順利解決問題的最佳方案啊!下一篇,就跟大家分享VLOOKUP在垂直查詢後向左擷取資料的幾種技法。