Excel 如何用 VLOOKUP 查詢資料?超詳細圖解教學,讓你晉升資料處理達人!
Table of Contents
Excel 如何用 VLOOKUP 查詢資料?
各位 Excel 的愛好者們,尤其是那些常常被海量資料淹沒,需要快速從一大堆表格中找出特定資訊的朋友們,相信大家一定都遇過這樣的困擾:明明資料就在那裡,但要費九牛二虎之力才能找到,真是讓人頭痛欲裂!別擔心,今天我要帶大家深入了解一個在 Excel 中處理資料的超級利器——VLOOKUP 函數!學會了它,你就能像變魔術一樣,輕鬆又準確地完成資料查詢和整合的任務,絕對讓你效率倍增,晉升資料處理達人!
簡單來說,VLOOKUP 函數就像是你專屬的資料小助手,你告訴它你要找的「東西」(查詢值),以及這個「東西」可能藏在哪個「範圍」(查詢範圍),還有你希望它從找到的「東西」旁邊,幫你帶回哪一欄的資訊(傳回欄位索引),最後再決定要「精確比對」還是「近似比對」。它就會乖乖地幫你把符合條件的資料找出來,傳回給你。是不是聽起來就覺得很厲害呀?
我自己在剛接觸 Excel 的時候,也常常為了查找資料而花費很多時間,尤其是在處理不同表格之間的關聯性資料時。當時,VLOOKUP 對我來說簡直是一個天書!但經過不斷地摸索和實踐,我發現它真的是一個能徹底改變工作流程的神奇工具。今天,我將會把我的經驗和詳細的步驟,毫無保留地分享給大家,保證讓你一次就學懂,而且是真的「懂」,而不是死記硬背!
VLOOKUP 函數的奇妙之處:為何它如此重要?
在我們開始學習實際操作之前,讓我們先來聊聊為什麼 VLOOKUP 如此重要,以及它能為我們帶來什麼樣的改變。想像一下,你手上有兩個 Excel 工作表:一個是客戶訂單表,裡面有訂單編號、客戶 ID、訂單日期等等;另一個是客戶基本資料表,裡面有客戶 ID、客戶名稱、聯絡電話、地址等等。現在,你需要在一份新的報表中,同時顯示每個訂單的客戶名稱和聯絡電話。沒有 VLOOKUP 的話,你可能得手動複製貼上,或者用篩選、排序來一個個找,這在訂單量大的時候,簡直是個噩夢,而且極容易出錯!
但是,有了 VLOOKUP,這個過程就可以變得非常簡單。你只需要在新的報表中,針對每一個訂單的客戶 ID,使用 VLOOKUP 去客戶基本資料表中尋找對應的客戶 ID,然後把客戶名稱和聯絡電話帶回來。這樣一來,不僅速度快上百倍,而且結果也更準確,大大降低了人為錯誤的機會。
我的經驗談: 剛開始我總是擔心函數的複雜性,但後來我發現,其實 VLOOKUP 的邏輯並不難理解。它最核心的概念就是「查尋」與「帶回」。只要搞清楚這兩點,並掌握好它的四個參數,你就能輕鬆駕馭它了。
VLOOKUP 函數的語法解析:拆解每個參數
要學會使用 VLOOKUP,首先要了解它的基本語法。VLOOKUP 函數的完整語法是這樣的:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
是不是看起來有點專業?別擔心,我們一個個來拆解,把它們變成我們最好懂的朋友:
- lookup_value (查詢值): 這就像是你在尋找的「線索」或「關鍵字」。它是你要在第一個表格(也就是
table_array的第一欄)中尋找的值。例如,如果你在找特定客戶的資料,這個「查詢值」就是客戶 ID。 - table_array (查詢範圍): 這就是
VLOOKUP要去「搜尋」的整個表格區域。它必須包含你想要尋找的「查詢值」以及你希望它「帶回」的欄位。非常重要的一點是:lookup_value必須位於table_array的最左邊那一欄。Excel 會從這一欄開始尋找lookup_value。 - col_index_num (傳回欄位索引): 當
VLOOKUP在table_array的第一欄找到了lookup_value後,它就會從這一列的相同位置,往右數,數到你指定的「傳回欄位索引」那一欄,並將該欄位的值傳回給你。請注意,這個數字是指table_array範圍內從左邊數起的第幾欄,而不是 Excel 工作表中實際的欄位字母。 - [range_lookup] (範圍查詢): 這是一個可選參數,但非常關鍵!它決定了
VLOOKUP是要進行「精確比對」還是「近似比對」。- 輸入
FALSE或0:表示進行「精確比對」。這意味著VLOOKUP只會尋找與lookup_value完全相同的值。如果找不到完全相同的值,它會傳回#N/A錯誤。在大多數情況下,我們都會使用這個選項,因為我們通常需要找到確切的資料。 - 輸入
TRUE或1(或省略):表示進行「近似比對」。這意味著VLOOKUP會尋找小於或等於lookup_value的最大值。請注意! 使用近似比對的前提是,table_array的第一欄必須是遞增排序的(通常是數字或字母順序)。這個選項常用於查詢區間價格、績效等級等。
- 輸入
我的經驗談: 很多人一開始會搞混 col_index_num,以為是 Excel 的欄位編號。記住,它是相對於你選取的 table_array 的左邊第一欄開始算的!還有,range_lookup 的 FALSE 或 TRUE(或 0 和 1)真的差很多,務必確認你的需求,以免得到錯誤的結果。
實戰演練:用 VLOOKUP 解決實際問題(步驟詳解)
理論講完了,現在就讓我們來實際動手操作,把 VLOOKUP 應用到一個具體的例子中吧!
假設我們有兩個工作表:
工作表一:產品銷售紀錄 (Sheet1)
| 訂單 ID | 產品 ID | 銷售數量 | 銷售日期 |
|---|---|---|---|
| 1001 | P003 | 5 | 2026/10/26 |
| 1002 | P001 | 10 | 2026/10/26 |
| 1003 | P002 | 8 | 2026/10/27 |
| 1004 | P003 | 2 | 2026/10/27 |
工作表二:產品資訊 (Sheet2)
| 產品 ID | 產品名稱 | 單價 | 庫存 |
|---|---|---|---|
| P001 | 筆記型電腦 | 35000 | 50 |
| P002 | 滑鼠 | 800 | 200 |
| P003 | 鍵盤 | 1500 | 150 |
我們的目標是,在「產品銷售紀錄」工作表中,新增「產品名稱」和「單價」這兩欄,讓每一筆銷售紀錄都能顯示對應的產品資訊。我們將會在 Sheet1 中進行操作。
步驟一:定義查詢值 (lookup_value)
在 Sheet1 的 D2 儲存格(假設我們要在 D 欄新增「產品名稱」),我們需要找出與之相對應的「產品 ID」。在 D2 儲存格中,我們輸入 =VLOOKUP(
我們想要查詢的「產品 ID」就在 B2 儲存格。所以,我們的 lookup_value 就是 B2。現在公式變成:=VLOOKUP(B2,
步驟二:選取查詢範圍 (table_array)
接著,我們要告訴 VLOOKUP 到哪裡去找這個「產品 ID」。我們需要到 Sheet2,並選取包含「產品 ID」、「產品名稱」和「單價」的整個表格區域。在這個例子中,我們選取 Sheet2 的 A2:C4 儲存格範圍。
重要提示: 在選取 table_array 時,務必將游標移到 Sheet2,然後選取 A2:C4。選取完畢後,為了在複製公式時讓這個範圍保持固定,我們需要按下 F4 鍵,將儲存格範圍變成絕對參照,變成 Sheet2!$A$2:$C$4。這樣,當我們把公式向下拖曳時,這個查詢範圍就不會跑掉。
現在公式變成:=VLOOKUP(B2, Sheet2!$A$2:$C$4,
步驟三:指定傳回欄位索引 (col_index_num)
我們希望帶回「產品名稱」。在我們選取的 table_array (Sheet2!$A$2:$C$4) 中,「產品名稱」是從左邊數起的第二欄。所以,我們的 col_index_num 就是 2。
現在公式變成:=VLOOKUP(B2, Sheet2!$A$2:$C$4, 2,
步驟四:設定範圍查詢 (range_lookup)
我們需要找到與 Sheet1 中的「產品 ID」完全符合的「產品 ID」在 Sheet2 中。因此,我們需要進行「精確比對」。在 range_lookup 參數中,我們輸入 FALSE (或 0)。
最後,我們加上右括號 ),完成公式:=VLOOKUP(B2, Sheet2!$A$2:$C$4, 2, FALSE)
步驟五:套用公式並複製
按下 Enter 鍵後,D2 儲存格就會顯示「鍵盤」。接著,我們將滑鼠游標移到 D2 儲存格的右下角,當游標變成一個黑色的小十字時,點擊滑鼠並向下拖曳,複製公式到 D3、D4、D5 儲存格。你就會發現,每一筆銷售紀錄都成功帶回了對應的產品名稱!
新增「單價」欄位
同理,我們可以在 E 欄新增「單價」。在 E2 儲存格輸入公式:
=VLOOKUP(B2, Sheet2!$A$2:$C$4, 3, FALSE)
這裡,我們將 col_index_num 改為 3,因為「單價」是我們選取範圍 (Sheet2!$A$2:$C$4) 中的第三欄。
同樣地,將公式向下複製到 E3、E4、E5 儲存格。
完成後,我們的 Sheet1 就會變成這樣:
| 訂單 ID | 產品 ID | 銷售數量 | 銷售日期 | 產品名稱 | 單價 |
|---|---|---|---|---|---|
| 1001 | P003 | 5 | 2026/10/26 | 鍵盤 | 1500 |
| 1002 | P001 | 10 | 2026/10/26 | 筆記型電腦 | 35000 |
| 1003 | P002 | 8 | 2026/10/27 | 滑鼠 | 800 |
| 1004 | P003 | 2 | 2026/10/27 | 鍵盤 | 1500 |
是不是超級方便!透過 VLOOKUP,我們輕輕鬆鬆就完成了兩個工作表之間的資料整合。
VLOOKUP 函數的常見錯誤與排除
雖然 VLOOKUP 非常強大,但有時候我們也會遇到一些讓人生氣的錯誤訊息,像是 #N/A、#REF! 或是傳回了不對的值。別急,這些通常都有解決辦法的!
1. #N/A 錯誤:找不到符合的值
這是最常見的錯誤,表示 VLOOKUP 在 table_array 的第一欄找不到你的 lookup_value。可能的原因有:
- 查詢值不存在: 你的
lookup_value在table_array的第一欄中確實沒有。 - 前後有空格: 這是個很小的細節,但卻常常被忽略!例如,儲存格裡的「P001」前面或後面多了一個空格,就會導致無法比對。你可以選取該欄,然後按下
Ctrl + H(尋找與取代),在「尋找目標」輸入一個空格,在「取代為」欄位留空,然後全部取代。 - 數字格式不同: 有時候,一個儲存格看起來是數字,但實際上它被儲存為文字。這會導致比對失敗。試著將兩邊的欄位格式都設定為「通用格式」或「數字」。
- 查詢範圍的第一欄不是 lookup_value: 再次確認,
lookup_value一定要放在table_array的最左邊那一欄。 - 使用近似比對但資料未排序: 如果你設定
range_lookup為TRUE(或省略),但table_array的第一欄不是遞增排序,就可能出現錯誤。
2. #REF! 錯誤:傳回欄位索引超出範圍
這個錯誤通常發生在你指定的 col_index_num 超出了 table_array 的欄位數。例如,你的 table_array 只有 3 欄,但你卻指定 col_index_num 為 4,就會出現這個錯誤。請仔細檢查你的 table_array 範圍和 col_index_num。
3. 傳回了不對的值(但沒有錯誤訊息)
這通常是因為你使用了「近似比對」 (range_lookup 為 TRUE 或省略),但你的資料並未正確排序,或是你的 lookup_value 應該要精確比對,卻誤設為近似比對。
我的建議: 除非你確定需要近似比對,否則強烈建議在 range_lookup 參數中永遠輸入 FALSE 或 0,這樣才能保證你找到的是最精確的結果。
進階應用與考量
學會了 VLOOKUP 的基本用法,你可能還會遇到一些更進階的需求。以下是一些額外的考量和提示:
當查詢範圍很大時的效能問題
如果你的 table_array 非常龐大(例如數十萬列),VLOOKUP 的計算速度可能會變慢,影響 Excel 的整體效能。在這種情況下,你可能需要考慮使用其他更有效率的函數,例如:
INDEX+MATCH組合: 這個組合在某些情況下比VLOOKUP更靈活且效能更好,而且它可以讓你查詢的欄位不在table_array的最左邊。XLOOKUP(Excel 365 和較新版本): 如果你使用的是較新版本的 Excel,XLOOKUP是VLOOKUP的一個更強大、更易用的替代方案,它解決了VLOOKUP的許多限制。
不過,對於大多數日常應用,VLOOKUP 絕對是你的首選,也是最容易上手的。
絕對參照與相對參照
我在前面的步驟中提到過,當選取 table_array 後,按下 F4 將其轉換為絕對參照(加上 $ 符號)是非常重要的,這樣在複製公式時,查詢範圍才不會移動。相對參照(沒有 $ 符號)則會在複製公式時根據新的位置自動調整。這兩者在 Excel 公式中扮演著不同的角色,理解它們的區別對於精確控制公式非常關鍵。
處理多個查詢條件
VLOOKUP 本身一次只能處理一個查詢值。如果你需要根據多個條件來查詢資料,例如同時根據「產品 ID」和「銷售日期」來找資料,你就不能直接使用 VLOOKUP。這時候,你可能需要結合其他函數,例如:
- 輔助欄位: 在你的
table_array中新增一個輔助欄位,將你想合併的欄位的值串接起來,然後以這個輔助欄位作為VLOOKUP的查詢值。 INDEX+MATCH組合(搭配陣列公式): 這種組合可以讓你更靈活地處理多個查詢條件。SUMIFS/AVERAGEIFS/COUNTIFS: 如果你的目的是對符合多個條件的資料進行加總、平均或計數,這些函數會比VLOOKUP更適合。
結論:讓 VLOOKUP 成為你 Excel 的得力助手!
各位朋友,學到這裡,相信你對 VLOOKUP 函數的了解已經非常深入了!從它的語法、實際操作步驟,到可能遇到的錯誤及解決方法,我都盡量用最清楚、最易懂的方式來跟大家說明。我真心覺得,VLOOKUP 這個函數的出現,簡直是大幅提升了我們處理 Excel 資料的效率和精準度。
請大家一定要動手去練習!理論再好,沒有實際操作,永遠也學不會。你可以找一些自己日常工作會用到的資料,試著用 VLOOKUP 去整合看看。過程中一定會遇到一些小挑戰,但別怕,每一次的解決問題,都是你進步的動力。
記住,Excel 的學習是一個循序漸進的過程。今天學會了 VLOOKUP,明後天你可能就會發現更多函數的妙用。最重要的是保持好奇心和練習的習慣。希望今天的教學對大家有幫助,讓你往後的 Excel 工作更加得心應手,不再為資料查詢而煩惱!
常見問題集
Q1:為什麼我的 VLOOKUP 函數傳回 #N/A 錯誤?
#N/A 錯誤表示 VLOOKUP 在指定的查詢範圍 (table_array) 的第一欄中,找不到你要尋找的值 (lookup_value)。請檢查以下幾點:
- 查詢值是否存在: 確認你要查詢的值 (lookup_value) 是否確實存在於查詢範圍的第一欄。
- 前後是否有空格: 這是最常見的原因之一。請檢查你的查詢值和查詢範圍的第一欄中,儲存格內的文字前後是否有不小心多出來的空格。你可以使用「尋找與取代」功能來移除空格。
- 格式不一致: 有時候,數字可能被儲存為文字,或是文字前面有看不見的特殊符號。試著將相關儲存格的格式設定為「通用格式」,並檢查是否有其他潛在的格式問題。
- 大小寫差異: 預設情況下,
VLOOKUP對於文字的比對是不區分大小寫的。但如果你的查找值和表格中的值因為其他原因(例如前面提到的空格)而無法完全匹配,也可能導致此錯誤。 - 查詢範圍的設定: 再次確認你的
table_array是否正確,並且你要查詢的值 (lookup_value) 是否位於table_array的最左邊那一欄。 - Range_lookup 參數: 如果你使用「近似比對」(range_lookup 設定為 TRUE 或省略),但你的查詢範圍第一欄並未按遞增排序,也可能出現
#N/A。
Q2:VLOOKUP 函數可以查詢右邊的資料嗎?
不行,這是 VLOOKUP 的一個主要限制。VLOOKUP 只能夠從你指定的查詢範圍 (table_array) 的最左邊那一欄開始向右查找,並將相同列、指定欄位索引 (col_index_num) 的值傳回。它無法查詢在你查詢值所在欄位左邊的資料。
如果你需要從左邊查找資料,建議你採用以下兩種方法:
- 調整表格結構: 如果可能,重新排列你的表格,將你想要查詢的值放在最左邊的欄位。
- 使用 INDEX + MATCH 組合: 這是
VLOOKUP的一個強大替代方案,MATCH函數可以用來找出值的位置,而INDEX函數則可以根據位置傳回指定欄位的值。這個組合的靈活性更高,可以實現左右查找。 - 使用 XLOOKUP (Excel 365+): 如果你使用的是新版本的 Excel,
XLOOKUP函數可以克服VLOOKUP的左右查找限制,更加方便。
Q3:VLOOKUP 函數中,range_lookup 設定為 TRUE 和 FALSE 有什麼區別?
這是 VLOOKUP 函數中最關鍵也最容易被誤解的參數之一。它們的區別在於比對的方式:
range_lookup 設定為 FALSE (或 0):
- 表示進行「精確比對」。
VLOOKUP會在查詢範圍的第一欄中,尋找與你的lookup_value完全相同的值。- 如果找不到完全相同的值,就會傳回
#N/A錯誤。 - 這是最常用的設定,適用於查找產品 ID、員工編號、訂單編號等需要精確匹配的情況。
- 注意: 使用
FALSE時,查詢範圍的第一欄不一定需要排序。
range_lookup 設定為 TRUE (或 1,或省略):
- 表示進行「近似比對」。
VLOOKUP會尋找小於或等於你的lookup_value的最大值。- 非常重要: 使用
TRUE時,查詢範圍的第一欄必須是以遞增排序(從小到大)的。如果沒有排序,傳回的結果將會是錯誤的。 - 這個設定常用於查找區間性的資料,例如:根據考試分數查找對應的成績等級(A、B、C),或根據銷售額查找對應的獎金比例。
我的建議: 在大多數情況下,如果你需要找到完全符合的值,請務必將 range_lookup 設定為 FALSE 或 0。只有在你確定需要進行區間查找,並且你的資料已經正確排序時,才考慮使用 TRUE。
Q4:為什麼我複製 VLOOKUP 公式後,傳回的值會跑掉?
這個問題通常是因為你沒有正確使用「絕對參照」或「相對參照」。當你在公式中引用儲存格或範圍時,Excel 有兩種參照方式:
- 相對參照 (例如:B2, A2:C4): 當你複製公式到新的儲存格時,這些參照會根據新儲存格的位置自動調整。
- 絕對參照 (例如:$B$2, $A$2:$C$4): 在參照前加上
$符號,表示這個參照是固定的,不會隨著公式的複製而改變。
在 VLOOKUP 函數中,我們通常需要:
lookup_value(查詢值) 使用相對參照: 因為當公式向下複製時,我們希望查詢的值能跟著換到下一列(例如 B2 變成 B3, B4…)。table_array(查詢範圍) 使用絕對參照: 因為無論公式複製到哪個儲存格,我們都希望它永遠從同一個固定的範圍去查找資料。
解決方法: 在選取 table_array (例如 Sheet2!A2:C4) 後,按下鍵盤上的 F4 鍵,它會自動在參照前後加上 $ 符號,將其轉換為絕對參照。如果你不小心按到了,想要取消,可以再按一次 F4。
Q5:Excel 365 版本有 VLOOKUP 嗎?還是有更好的替代函數?
是的,Excel 365 版本依然包含 VLOOKUP 函數,讓舊有使用者可以順暢轉換。然而,Excel 365 也引入了一個更強大、更靈活的函數——XLOOKUP。
XLOOKUP 函數解決了 VLOOKUP 的許多限制,例如:
- 查找方向更自由:
XLOOKUP不僅可以向右查找,也可以向左查找,打破了VLOOKUP的限制。 - 參數更簡潔:
XLOOKUP的語法通常比VLOOKUP更容易理解,參數也更直觀。 - 內建錯誤處理:
XLOOKUP可以直接在函數內設定找不到值時要顯示的內容,省去了使用IFERROR函數的步驟。 - 更強大的匹配模式: 支援模糊匹配(例如使用萬用字元)等更進階的功能。
如果你使用的是 Excel 365 或更新的版本,強烈建議你學習並開始使用 XLOOKUP。但如果你仍在使用較舊版本的 Excel,VLOOKUP 依然是你處理資料查詢的首選工具。
