VLOOKUP 函數

套用到
Microsoft 365 Excel Mac 版 Microsoft 365 Excel Excel 2024 Mac 版 Excel 2024 Excel 2021 Mac 版 Excel 2021 Excel 2019 Excel 2016

秘訣

請嘗試使用新的 XLOOKUP 函數,這是 VLOOKUP 的改良版本,可朝任何方向運作,並預設會傳回完全符合的比對,因此比其前置函數更容易且更方便使用。

在您需要於表格中或以列為主的範圍尋找項目時,請使用 VLOOKUP。 例如,依據零件編號查詢汽車零件的價格,或根據員工識別碼尋找員工名稱。

以其最簡單的形式而言,VLOOKUP 函數表示:

=VLOOKUP (您要查閱的項目、要尋找的位置、包含要傳回值的範圍中的欄位號、傳回大約符合或完全符合的值,顯示 1/TRUE 或 0/FALSE)。

秘訣

  • 使用 VLOOKUP 的訣竅,便是整理您的資料,讓要查閱的值 (Fruit) 位於要尋找的傳回值 (Amount) 左側。
  • 如果你是 Microsoft Copilot 的訂閱者,Copilot 可以讓你更容易插入和使用 VLookup 或 XLookup 功能。 你看, Copilot 讓 Excel 查詢變得簡單。

技術詳細資訊

使用 VLOOKUP 函數來查閱表格中的值。

語法

VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])

例如:

  • =VLOOKUP (A2,A10:C20,2,TRUE)
  • = VLOOKUP("連",B2:E7,2,FALSE)
  • =VLOOKUP (A2,「客戶資料」!A:F,3,FALSE)
引數名稱 描述
lookup_value (必填) 您要查閱的值。 你要查詢的值必須在 你在table_array 參數中指定的儲存格範圍的第一欄。
例如,如果 資料表陣列 跨度為 B2:D7,那麼你的lookup_value必須在 B 欄。
Lookup_value 可以是值,也可以是對某個儲存格的參考。
table_array (必填) VLOOKUP 會搜尋 lookup_value 與回傳值的儲存格範圍。 您可以使用具名範圍或表格,而且可以使用引數中的名稱,而非儲存格參照。
單元範圍的第一欄必須包含 lookup_value。 儲存格範圍也必須包括您要尋找的傳回值。
了解如何選取工作表中的範圍
col_index_num (必填) 欄位編號 (以 1 開頭 table_array) 中最左邊的欄位,包含回傳值。
range_lookup (選填) 這是用以指定要 VLOOKUP 尋找大約符合或完全符合值的邏輯值:
  • 大約符合 - 1/TRUE 會假設表格中的第一欄會依數字順序或字母順序排列,然後搜尋最接近值。 如果您沒有指定方法,則預設為 TRUE。 例如,=VLOOKUP (90,A1:B100,2,TRUE)。
  • 完全符合 - 0/FALSE 會搜尋第一欄中的確切值。 例如,=VLOOKUP("Smith",A1:B100,2,FALSE)。

如何開始

建置 VLOOKUP 語法需要四項資訊:

  1. 您想要查閱的值,也稱為「查閱值」。
  2. 查閱值所在的範圍。 請記住,查閱值必須一律位於範圍的第一欄內,VLOOKUP 才能正確運作。 例如,如果您的查閱值是位於儲存格 C2 中,您的範圍便應該從 C 開始。
  3. 範圍中包含傳回值的欄號。 例如,如果您將範圍指定為 B2:D11,您應該將 B 視為第一欄,C 視為第二欄,依此類推。
  4. 此外,如果您想要取得大約符合回傳值,可以指定 TRUE,如果想要取得完全符合回傳值,可以指定 FALSE。 若您不指定,預設值一律為 TRUE 或稱為大約符合值。

現在將上述內容組合在一起:

=VLOOKUP (查閱值, 範圍包含查閱值,範圍中包含傳回值的欄位號,大約符合 (TRUE) 或完全符合 (FALSE))。

範例

以下是 VLOOKUP 的一些範例:

範例 1

=VLOOKUP (B3,B2:E7,2,FALSE) VLOOKUP 在 table_array B2:E7 中尋找第一欄 (欄 B) ,並從table_array) 第二欄回傳 Olivier, (C欄。False 則會回傳完全匹配的結果。

範例 2

=VLOOKUP (102,A2:C7,2,FALSE) VLOOKUP尋找 (A2:C7範圍內的102 (lookup_value)  () B欄B的姓氏的FALSE) 完全匹配,並回傳Fontana。

範例 3

=IF (VLOOKUP (103,A1:E7,2,FALSE) =Souse, Located, Not Found) IF 檢查 VLOOKUP 是否將 Sousa 作為員工姓氏,對應於 A1:E7 (table_array) 中的 103 (lookup_value) 。由於103的姓氏為Leal,IF條件為假,顯示「未找到」。

範例 4

=INT (YEARFRAC (日期 (2014,6,30) ,VLOOKUP (105,A2:E7,5,FLASE) ,1) ) VLOOKUP 尋找員工的出生日期,對應於 A2:E7 範圍 (table_array) 中的 109 (lookup_value) ,並回傳 1955 年 3 月 4 日。接著,YEARFRAC 會從 2014/6/30 減去這個出生日期,並回傳一個數值,然後再由 INY 轉換成整數 59。

範例 5

如果 ISNA ( (VLOOKUP (105,A2:E7,2,FLASE) ) =TRUE,未找到員工,VLOOKUP (105,A2:E7,2,FALSE) ) IF 檢查 VLOOKUP 是否從 B 欄回傳 105 (lookup_value) 的姓氏值。如果 VLOOKUP 找到姓氏,IF 會顯示該姓氏,否則 IF 會回傳 Employee not found。ISNA 確保如果 VLOOKUP 回傳 #N/A,錯誤會被替換為「找不到員工」,而不是 #N/A。在這個例子中,回傳值是 Burke,也就是對應 105 的姓氏。

常見問題

問題 錯在哪裡
傳回錯誤值 如果 range_lookup 為真或遺漏,第一欄需按字母或數字排序。 如果第一欄沒有排列,傳回值可能會出錯。 您可以排序第一欄,或以 FALSE 找尋完全符合的值。
儲存格中出現 #N/A
  • 如果 range_lookup 為真,那麼如果 lookup_value 中的值小於 table_array第一欄的最小值,就會得到 #N/A 錯誤值。
  • 如果 range_lookup 為 FALSE,#N/A 錯誤值表示找不到精確的數字。
如需解決 VLOOKUP 中 #N/A 錯誤的詳細資訊,請參閱如何修正 VLOOKUP 函數中的 #N/A 錯誤
#REF! (在儲存格中) 如果 col_index_num 大於 表格陣列的欄位數,你就會得到 #REF! 錯誤值。
如需解決 VLOOKUP 中 #REF! VLOOKUP 中的錯誤,請參閱 如何修正 #REF! 錯誤
#VALUE! (在儲存格中) 如果 table_array 小於1,你就會拿到 #VALUE! 錯誤值。
如需解決 VLOOKUP 中 #VALUE! VLOOKUP 中的錯誤,請參閱 VLOOKUP 函式中如何更正 #VALUE! 錯誤
儲存格中的 #NAME? #NAME?錯誤值通常表示公式缺少引號。 若要查詢人名時,請務必在公式中的人名前後加上雙引號。 例如,在 =VLOOKUP("周",B2:E7,2,FALSE) 中,請將名字寫成 "周"
如需詳細資訊,請參閱如何修正 #NAME? 錯誤
#SPILL! (在儲存格中) 這個特定的 #SPILL! 錯誤 通常表示你的公式依賴隱式交叉來取得查找值,並且使用整欄作為參考。 例如,=VLOOKUP ( A:A,A:C,2,FALSE) 。 您可以使用 @ 運算子來錨定查閱參照以解決問題,如下所示:=VLOOKUP(@A:A,A:C,2,FALSE).。 或者,您可以使用傳統的 VLOOKUP 方法,並參照單一儲存格,而非整個欄:=VLOOKUP(A2,A:C,2,FALSE)。

最佳做法

進行這項操作 理由
請使用絕對的參考資料 range_lookup 使用絕對參照可讓您填滿公式,使它永遠查閱完全相同的範圍。
進一步了解如何使用絕對儲存格參照
不要將數字或日期儲存為文字。 搜尋數字或日期值時,請確保 table_array 第一欄的資料不是以文字值儲存。 否則,VLOOKUP 可能會傳回不正確或非預期的值。
將第一欄排序 在使用 VLOOKUP 之前,先先排序 table_array 的第一欄,當 range_lookup 為真時。
使用萬用字元 如果 range_lookup 是假且 lookup_value 是文字,你可以在 lookup_value中使用萬用字元——問號 (?) 和星號 (*) 。 問號可比對任何一個字元。 星號可比對任何一串字元。 如果您要尋找實際的問號或星號,請在該字元前面輸入波狀符號 (~)。
例如,=VLOOKUP("Fontan?",B2:E7,2,FALSE) 將搜尋與 Fontana 僅最後一個字母不同的所有執行個體。
請確定您的資料沒有包含錯誤的字元。 在搜尋第一欄的文字值時,請確保第一欄的資料沒有前置空格、後置空格、不一致的直 ( '或「) 」和「 (」或「) 引號」或非列印字元。 否則 VLOOKUP 可能會傳回不在預期之內的值。
若要得出正確的結果,可嘗試使用 CLEAN 函數TRIM 函數,移除儲存格中表格值後面的結尾空格。

需要更多協助嗎?

你隨時可以向 Excel 技術社群 的專家詢問,或在 社群中獲得支援。