VLOOKUP 函數
VLOOKUP 是試算表歷史上最著名、但也最容易踩坑的查詢公式。掌握 4 個參數結構、搞懂近似比對與精確比對的界線、避開欄位硬編碼陷阱,並在鎖定迷你表上直接驗證。
VLOOKUP 函數語法與 4 大參數結構
VLOOKUP(Vertical Lookup,垂直查詢)由左至右掃描表格第一欄,找到目標值後回傳同列中指定欄位的資料。
要尋找的目標值(例如商品編號 E2、客戶名稱或數值)。這個值必須存在於 table_array 的「最左側第一欄」。
包含資料的搜尋範圍(例如 A2:D6)。公式向下或向右拖曳時,請務必加上 $ 符號鎖定(如 $A$2:$D$6)。
要取回資料的欄位序號(由 table_array 第一欄起算為 1)。例如 A2:C6 中,A 欄是 1,C 欄是 3。非工作表絕對欄號!
比對模式:FALSE 或 0 為完全相符(絕大多數業務必填);TRUE 或 1(或省略)為近似比對(階梯級距查詢且需事先升序排序)。
Excel VLOOKUP 範例:依商品編號查詢單價
A 欄是商品編號,B 欄是品名,C 欄是單價。E2 放要查的編號:SKU-102。這則 Excel VLOOKUP 範例使用精確比對。
| 商品編號 | 品名 | 單價 |
|---|---|---|
| SKU-101 | Notebook | 12 |
| SKU-102 | Pen set | 8 |
| SKU-103 | Binder | 15 |
| SKU-104 | Stapler | 9 |
VLOOKUP 在 A2:C5 的第一欄找到 SKU-102,從同一列的第 3 欄回傳 8。FALSE(或 0)代表精確比對。省略第 4 參數時,Excel VLOOKUP 改用近似比對,未遞增排序的表會悄悄回傳錯誤列。編號不存在、文字型數字,或前後多一個空格,都會回傳 #N/A。
VLOOKUP 最常踩的 4 大陷阱
1. 預設是近似比對(忘記寫 FALSE 導致安靜出錯)
如果不填第 4 參數,VLOOKUP 預設為 TRUE 近似比對。在未遞增排序的文字資料中,它不會報錯,而是悄悄回傳錯誤列的資料!強烈建議日常查工號、訂單號一律手動填寫 FALSE 或 0。
2. 只能由左向右查(不能反向向左)
lookup_value 必須嚴格位於 table_array 的第一欄。如果查詢鍵在 C 欄,要查的資料在 A 欄,VLOOKUP 完全無能為力。此時必須改用 INDEX+MATCH 或現代 XLOOKUP。
3. 欄位序號硬編碼(插入或刪除欄位直接壞掉)
col_index_num 是靜態數字(如 3)。一旦有人在對照表中間插入新欄位,原本第 3 欄的資料變成第 4 欄,VLOOKUP 不會自動更新,直接讀取錯誤資料或引發 #REF!。
4. #N/A 格式不相符(文字型數字 vs 真正的數字)
肉眼看都是 1001,但一個是文字型(左對齊),另一個是數值型(右對齊),VLOOKUP 就會回傳 #N/A。文字頭尾多一個隱藏空格也會落空,可用 TRIM(E2) 或 VALUE(E2) 清洗。
查詢三劍客:VLOOKUP vs XLOOKUP vs INDEX+MATCH
VLOOKUP
老牌霸主。歷史最久、所有舊版 Excel 相容性最佳、求職面試必考。缺點是只能向右、插入欄位易斷裂、預設為近似比對。
XLOOKUP
現代推薦。向左向右隨心查、支援原生 not_found 備用值、預設精確比對、欄位插入不損壞。推薦 Office 365 與 Google Sheets 用戶優先使用。
INDEX + MATCH
經典組合。=INDEX(A2:A6, MATCH(E2, C2:C6, 0))。完全不怕欄位被插入移動、支援雙向查表,舊版 Excel 跨版本相容性無敵。
Excel 與 Google Sheets 平台差異與進階用法
Microsoft Excel (365 / Desktop)
在 Excel 365 中,可使用陣列常數同時回傳多欄:=VLOOKUP(F2, A2:D6, {2, 3, 4}, FALSE)。舊版 Excel 需固定 $A$2:$D$6 並在各欄分別調整索引序號。
Google Sheets
Google Sheets 原生支援整欄展開:=ARRAYFORMULA(VLOOKUP(E2:E, A2:D, 3, FALSE)),免手動下拉即可為數千筆訂單即時查詢,公式僅需寫在首列。
更多 VLOOKUP 實戰關卡推薦
從精確比對、階梯稅率近似查詢,到多欄連攜取數與 IFERROR 容錯,在真實業務情境中練出肌肉記憶。
常見問題
VLOOKUP 是如何運作的?
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup]) 在 table_array 的最左側第一欄尋找 lookup_value,並回傳同列中第 col_index_num 欄的對應資料。
為什麼 VLOOKUP 會回傳 #N/A 錯誤?
1) 對照表第一欄找不到該值。2) 文字前後有不可見的空白字元。3) 資料型別不匹配(文字型數字 vs 真正的數值)。4) 忘記輸入第 4 參數 FALSE,在未排序表格中引發近似比對落空。
VLOOKUP 的 TRUE 與 FALSE 有何差別?
FALSE(或 0)代表完全相符(精確比對);TRUE(或 1,或省略)代表近似比對,要求對照表第一欄必須嚴格遞增排序,適合用於階梯稅率、成績等第等區間查詢。
Google Sheets 的 VLOOKUP 有何不同?
語法完全相容。此外 Google Sheets 原生支援 =ARRAYFORMULA(VLOOKUP(E2:E, A2:C, 3, FALSE)),可整欄自動展開運算,無需手動向下拖曳公式。
XLOOKUP 與 VLOOKUP 該選哪一個?
現代 Excel(Microsoft 365)與 Google Sheets 強烈建議使用 XLOOKUP:不限向左或向右、插入欄位不破壞參照、預設精確比對。但 VLOOKUP 依然是舊版檔案相容性與企業面試中最常考的標竿。