LOOKUP 函數用法:看懂兩種引數形式與 VLOOKUP 差異

LOOKUP 函數用法主要分成向量形式與陣列形式,所以在 Excel 插入函數時,才會出現兩組不同的引數選項。本文用同一張成績查詢表,實際比較 LOOKUP、HLOOKUP、VLOOKUP 三個函數的查表邏輯與適用情境。

LOOKUP 函數用法:看懂兩種引數形式與 VLOOKUP 差異

一、LOOKUP 函數用法為什麼會出現兩種引數

LOOKUP 函數用法在 Excel 插入函數時,會跳出一個「選取引數」的對話框,畫面顯示「此函數有多組引數清單組合,請選取您要的組合」,下方列出兩個選項:「lookup_value,lookup_vector,result_vector」以及「lookup_value,array」。這是贊贊小屋第一次使用 LOOKUP 時最直觀的疑惑:明明只是一個函數,為什麼會被要求先做選擇。

這兩個選項其實對應 Microsoft 官方說明中的 LOOKUP 函數兩種寫法:向量形式與陣列形式。向量形式是分別指定「查詢範圍」與「結果範圍」兩個獨立區域,查詢邏輯比較容易理解;陣列形式則只給一個範圍,讓 LOOKUP 自己判斷要用哪一欄或哪一列查找、哪一欄或哪一列回傳。然而正是這個「自己判斷」的機制,讓陣列形式的結果有時候會出乎意料,這也是後面幾節要實際示範的重點。

LOOKUP 函數用法為什麼會出現兩種引數
LOOKUP 函數用法為什麼會出現兩種引數 2

二、資料驗證建立學生姓名下拉選單

在正式測試 LOOKUP 之前,贊贊小屋先用資料驗證功能建立一個學生姓名下拉選單。設定畫面中,「儲存格內允許」選擇「清單」,來源欄位輸入「=$B$2:$B$4」,也就是李白、杜甫、韓愈三個姓名所在的範圍,並勾選「忽略空白」與「儲存格內的下拉清單」兩個選項。

完成設定後,點選對應儲存格就會出現下拉箭頭,清單裡列出李白、杜甫、韓愈三個選項,畫面中目前選取的是「韓愈」。這個下拉選單不只是操作方便,更重要的是讓後面每一個公式範例都能用同一個姓名欄位切換查詢對象,方便直接比較 LOOKUP、HLOOKUP、VLOOKUP 在同一個動作下的不同反應。

資料驗證建立學生姓名下拉選單
資料驗證建立學生姓名下拉選單 2
資料驗證建立學生姓名下拉選單 3

三、LOOKUP 查兩欄資料的基本效果

這一節實際測試 LOOKUP 陣列形式。公式輸入「=LOOKUP(B7,B2:C4)」,查詢值 B7 是「韓愈」,陣列範圍是 B2:C4,也就是姓名與國文成績兩欄、三列資料。這個範圍的形狀是「窄於高」,欄數少於列數,結果回傳 50,看起來正好符合需求,也就是韓愈的國文成績。

再換個角度思考,這個結果之所以看起來合理,是因為範圍形狀剛好符合 LOOKUP 陣列形式在窄範圍中的判斷邏輯:當範圍的欄數少於或等於列數時,LOOKUP 會用第一欄去比對查詢值,再從最後一欄取出對應的結果。因此在這個小範圍裡,LOOKUP 的行為其實跟 VLOOKUP 查第二欄非常相似,也難怪很多人第一次用會誤以為 LOOKUP 陣列形式一直都是這樣運作。

LOOKUP 查兩欄資料的基本效果
LOOKUP 查兩欄資料的基本效果 2

四、LOOKUP 擴大陣列後為什麼回傳韓愈

接著把陣列範圍從 B2:C4 擴大成 B2:F4,公式變成「=LOOKUP(B7,B2:F4)」,涵蓋姓名、國文、數學、理化、總分五個欄位。這時候查詢值同樣是 B7 的「韓愈」,但 F7 顯示出來的結果卻是文字「韓愈」,而不是原本預期的總分 220。

這正是 LOOKUP 陣列形式最容易讓人誤解的地方。擴大後的範圍是寬於高,LOOKUP 會改用第一列 B2:F2 比對,再從最後一列 B4:F4 回傳。公式表面上仍然有結果,但這個結果不是依照姓名欄找到韓愈那一筆資料,而是陣列形式依範圍形狀自行判斷後產生的結果,因此才會回傳出偏離查詢意圖的「韓愈」。這個陷阱說明陣列形式並不是不能用,而是使用前必須先確認範圍形狀,否則同一個公式在不同範圍下可能給出完全不同邏輯的結果。

LOOKUP 擴大陣列後為什麼回傳韓愈
LOOKUP 擴大陣列後為什麼回傳韓愈 2

五、HLOOKUP 用欄位標題查總分

看到 LOOKUP 陣列形式的不穩定之後,這一節改用 HLOOKUP 處理同樣的查詢需求。公式是「=HLOOKUP(F6,B1:F4,4,0)」,查詢值 F6 是欄位標題「總分」,範圍 B1:F4 包含標題列,最後的 4 代表要往下取第 4 列,0 則代表要求精確比對。

這個公式的邏輯很明確:先用「總分」這個欄位名稱橫向比對到 B1:F4 的標題列,找到對應欄位後,再往下數到第 4 列取值,結果正確回傳韓愈的總分 220。因此比起 LOOKUP 陣列形式需要自己判斷範圍形狀,HLOOKUP 一開始就把「查找方向」與「要取第幾列」講清楚,公式看起來雖然多了幾個引數,但邏輯反而更容易掌握。

HLOOKUP 用欄位標題查總分
HLOOKUP 用欄位標題查總分 2

六、HLOOKUP 橫向查成績為什麼仍有限制

延續上一節的公式,畫面下方新增一列完整結果,韓愈這一列橫向顯示國文 50、數學 70、理化 100、總分 220,看起來 HLOOKUP 已經能完整查出一位學生的所有科目成績。然而當姓名下拉選單改選成「李白」之後,這一列的數字卻沒有跟著更新,仍然停留在韓愈的 50、70、100、220,公式欄位顯示的仍是原本的「=HLOOKUP(F6,B1:F4,4,0)」。

這裡要特別說清楚,HLOOKUP 本身並沒有錯,它確實可以依照「總分」這類欄位標題橫向查出資料,錯的地方是這個案例的查詢需求,從一開始就不是單純依欄位標題查資料,而是要依照姓名下拉選單切換查詢對象。HLOOKUP 公式裡的查詢值 F6 是固定的欄位標題,row_index 也寫死成 4,兩者都跟 B 欄的姓名下拉選單無關,因此換了姓名,公式自然不會跟著改變。這個限制也直接帶出下一節要處理的問題:如果查詢條件是姓名,就必須改用以姓名為查詢值的 VLOOKUP。

HLOOKUP 橫向查成績為什麼仍有限制
HLOOKUP 橫向查成績為什麼仍有限制 2

七、VLOOKUP 用姓名查國文成績

這一節改用 VLOOKUP 處理同樣的查詢表,公式是「=VLOOKUP(B8,B2:F4,2,0)」,查詢值 B8 是姓名,範圍 B2:F4 從姓名欄開始,欄號 2 代表要回傳第二欄,也就是國文成績,最後的 0 一樣代表精確比對。

這個公式查詢值 B8 目前是「韓愈」,結果正確回傳 50。因此和前一節 HLOOKUP 最大的差異在於,VLOOKUP 一開始就是以姓名這個直向欄位當作查詢值,只要下拉選單切換姓名,B8 的內容就會跟著改變,公式自然能查到對應那一列的資料,不會像 HLOOKUP 那樣被固定的欄位標題與列號綁死。

VLOOKUP 用姓名查國文成績
VLOOKUP 用姓名查國文成績 2

八、VLOOKUP 搭配 COLUMN 橫向填滿公式

最後這一節示範進階寫法,公式是「=VLOOKUP($B9,$B$2:$F$4,COLUMN()-1,0)」。查詢值用「$B9」鎖定欄、不鎖定列,查表範圍「$B$2:$F$4」欄與列都鎖定,第三個引數改用「COLUMN()-1」動態計算,讓公式本身就能算出目前所在欄位對應的欄號。

畫面中把姓名切換成李白後,這一整列會自動更新成 100、90、60、250,正確對應李白的國文、數學、理化與總分。公式只要寫一次,就可以向右複製到每一科成績;之後只要切換 B9 的姓名,下方結果就會同步改變,不需要逐格重新調整欄號。這是這張成績查詢表最終比較完整的解法。

VLOOKUP 搭配 COLUMN 橫向填滿公式
VLOOKUP 搭配 COLUMN 橫向填滿公式 2

LOOKUP 看懂兩種形式後,才知道該換哪個函數

回到文章一開始的疑惑,贊贊小屋要說的不是 LOOKUP 不能用,而是看懂它的兩種形式之後,才知道什麼情境該用 LOOKUP,什麼情境該換成別的函數。向量形式邏輯清楚,陣列形式雖然公式短,卻會因為範圍形狀不同而改變查找方向,稍不留意就會像第四節那樣查出偏離意圖的結果;若想進一步比較級距查詢情境,可以延伸閱讀贊贊小屋另一篇 Excel LOOKUP VLOOKUP 差異

畢竟查表這件事,最重要的是結果要跟得上查詢條件的變化。相較之下,HLOOKUP 適合依欄位標題橫向查詢,但遇到需要依姓名切換整列資料的情境就會顯得不夠靈活;VLOOKUP 搭配 COLUMN() 動態抓欄號,才是這張成績查詢表最終比較合適的做法。看懂 LOOKUP、HLOOKUP、VLOOKUP 三者的差異,下次遇到類似的查表需求,自然就知道該從哪一個函數下手。

LOOKUP 看懂兩種形式後,才知道該換哪個函數

👋 分享文章時提供範例檔案,請加入 贊贊小屋Line社群

📚 Excel 教學中心資源: 查看全部
基礎教學 常用功能 樞紐分析 快捷鍵 函數教學 圖表教學 Excel公式大全 VLOOKUP範例 SUMIF函數 SUMIFS用法 Indirect函數範例 Excel甘特圖教學 Excel IF公式

🚀 想從零基礎變身職場高手?

一站式學習:Excel全能王者課程
贊贊小屋Excel Line社群QR Code
加入「贊贊小屋 Excel Line」社群 🚀

學 Excel、學會計、學 AI! 定期分享範例檔案資源,每天學習,每天更強大。

立即免費加入