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

當您需要按列尋找表格或範圍時,請使用 VLOOKUP。 例如,以零件編號來查看汽車零件的價格,或根據員工識別碼尋找員工名稱。

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

=VLOOKUP (您想要尋找的是什麼、您想要尋找的地方、包含要傳回值的範圍中的欄號、會返回大約或完全相同的相符專案 -表示為 1/TRUE 或 0/FALSE) 。

您的瀏覽器不支援視訊。

提示: 使用 VLOOKUP 的訣竅,便是整理您的資料,讓要查閱的值 (Fruit) 位於要尋找的傳回值 (Amount) 左側。

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

語法 

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

例如:

  • =VLOOKUP (A2,A10:C20,2,TRUE)

  • = VLOOKUP("連",B2:E7,2,FALSE)

  • =VLOOKUP (A2,'用戶端詳細資料'!答:F,3,FALSE)

引數名稱

描述

lookup_value    (必填)

您要查閱的值。 您想要尋找的值必須位在您于 table_array 引數中指定的儲存格範圍的第一欄

例如,如果 表格陣列 橫跨儲存格 B2:D7,則您的lookup_value必須位在欄 B 中。

請見下圖,Lookup_value 可以是值或儲存格參照。

table_array    (必填)

VLOOKUP 會針對 lookup_value 搜尋及傳回值的儲存格範圍。 您可以使用命名範圍或資料表,而且您可以在引數中使用名稱,而不是儲存格參照。 

儲存格範圍的第一欄必須包含lookup_value。 儲存格範圍也需要包含您想要尋找的傳回值。

了解如何選取工作表中的範圍

col_index_num    (必填)

包含 (之最左邊欄的欄table_array) 從 1 開始。

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) 中尋找 Fontana,然後從 table_array 的第二欄 (欄 C) 中) 返回 Olivier。  False 會返回完全相同的相符專案。

範例 2

=VLOOKUP (102,A2:C7,2,FALSE) 

VLOOKUP 在 A2:C7 範圍的第二欄 ( (欄 B) 中,尋找 10 (lookup_value) 2) 姓氏的完全相符的 FALSE) ,並返回 Fontana。

範例 3

=IF (VLOOKUP (103,A1:E7,2,FALSE) ="Souse","位置","找不到") 

IF 會檢查 VLOOKUP 是否傳回 Sousa 做為員工在 A1:E7 (lookup_value) 103 (table_array) 。 由於對應到 103 的姓氏是 Leal,因此 IF 條件為 False,且顯示找不到。

範例 4

=INT (YEARFRAC (DATE (2014,6,30) ,VLOOKUP (105,A2:E7,5,FLASE) ,1) ) 

VLOOKUP 會尋找員工在 A2:E7 (lookup_value) 中對應到 109 名員工的出生日期 (table_array) 並返回 03/04/1955。 然後,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 會返回找不到的員工。 ISNA 會確認如果 VLOOKUP 會#N/A,則錯誤會取代為找不到的員工,而不是#N/A。



在此範例中,return 值為 Burke,這是對應到 105 的姓氏。

您可以使用 VLOOKUP 將多個資料表合併成一個,只要其中一個資料表有與其他資料表共同的欄位。 如果您需要與不支援多個資料表的資料功能做為資料來源的較舊版本 Excel 共用活頁簿,這項功能會特別實用,只要將資料來源合併成一個資料表,將資料功能的資料來源變更為新資料表,資料功能就可以用於舊版 Excel 版本 (只要舊版) 支援資料功能本身。

包含使用 VLOOKUP 從其他資料表取得資料的欄的工作表

在這裡,A-F 欄和 H 欄的值或公式只會使用工作表上的值,而其餘的欄則使用 VLOOKUP 以及欄 A (用戶端代碼) 和欄 B (律師) 的值,以取得其他資料表的資料。

  1. 將具有常用欄位的表格複製到新工作表,並命名。

  2. 按一下 [資料 > 資料工具 > [資料庫與 資料庫>以開啟 [管理資料庫關係> 對話方塊。

    [管理關係及管理關係> 對話方塊
  3. 針對每個列出的關係,請注意下列事項:

    • 連結資料表的欄位 (對話方塊的括弧中) 。 這是 VLOOKUP lookup_value 的公式。

    • 關聯資料表名稱。 這是 VLOOKUP table_array 的公式。

    • 欄位 (欄) 資料表的關聯資料表中,新欄中有您想要的資料。 這項資訊不會顯示在 [管理關聯圖? 您想要記下 A=1 (欄) - 這是公式col_index_num 欄號。

  4. 若要新增欄位至新資料表,請在第一個空白欄中,使用步驟 3 中收集的資訊,輸入您的 VLOOKUP 公式。

    在我們的範例中,資料行 G 使用 (lookup_value) 從 [律師] 工作表資料表的第四欄 (col_index_num = 4) 取得 [帳單費率] 資料,tblAttorneys (table_array) ,公式為 =VLOOKUP ([@Attorney],tbl_Attorneys,4,FALSE) 。

    公式也可以使用儲存格參照和範圍參照。 在我們的範例中,它會是 =VLOOKUP (A2,'律師'!答:D,4,FALSE) 。

  5. 繼續新增欄位,直到您擁有所需的所有欄位。 如果您嘗試準備含有使用多個資料表之資料功能的活頁簿,請變更資料功能的資料來源至新資料表。

問題

錯在哪裡

傳回錯誤值

如果 range_lookup 為 TRUE 或省略,則第一欄必須依字母順序或數字順序排列。 如果第一欄沒有排列,傳回值可能會出錯。 您可以排序第一欄,或以 FALSE 找尋完全符合的值。

儲存格中出現 #N/A

  • 如果 range_lookup 為 TRUE,則如果 lookup_value 的值小於 table_array 第一欄的最小值,您會接獲 #N/A 錯誤值。

  • 如果 range_lookup 是 FALSE,則 #N/A 錯誤值代表找不到完全符合的值。

如需解決 VLOOKUP 中 #N/A 錯誤的詳細資訊,請參閱如何修正 VLOOKUP 函數中的 #N/A 錯誤

#REF! (在儲存格中)

如果 col_index_num 大於 table-array 中的欄數,您會接獲 #REF! 錯誤值。

如需解決 VLOOKUP 中 #REF! 錯誤的詳細資訊,請參閱如何修正 #REF! 錯誤.

#VALUE! (在儲存格中)

如果 table_array 小於 1,您會接獲 #VALUE! 錯誤值。

如需解決 VLOOKUP 中 #VALUE! 錯誤的詳細資訊,請參閱如何修正 VLOOKUP 函數中的 #VALUE! 錯誤.

#NAME? (在儲存格中)

#NAME? 錯誤值通常表示公式漏掉雙引號。 若要查詢人名時,請務必在公式中的人名前後加上雙引號。 例如,在 =VLOOKUP("連",B2:E7,2,FALSE) 中,請將名字寫成 "連"

如需詳細資訊,請參閱如何修正 #NAME? 錯誤.

Excel 中的 #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 可能會傳回不正確或非預期的值。

將第一欄排序

如果 range_lookup 是 TRUE,請在使用 VLOOKUP 之前,先將 table_array 的第一欄排序。

使用萬用字元

如果 range_lookup 是 FALSE,而且 look_up value 是文字,則您可在 look_up value 中使用萬用字元 (問號 (?) 和星號 (*))。 問號可比對任何一個字元。 星號可比對任何一串字元。 如果您要尋找實際的問號或星號,請在該字元前面輸入波狀符號 (~)。

例如,=VLOOKUP ( Fontan?,B2:E7,2,FALSE) 會搜尋所有 Fontana 實例,其最後一個字母可能會有所不同。

請確定您的資料沒有包含錯誤的字元。

在第一欄中搜尋文字值時,請確定第一欄中的資料不包含前置空格、結尾空格、不成對的直引號 ( ' 或 " ) 及彎引號 ( ‘ 或 “ ),以及非列印字元。 否則 VLOOKUP 可能會傳回不在預期之內的值。

若要得出正確的結果,可嘗試使用 CLEAN 函數TRIM 函數,移除儲存格中表格值後面的結尾空格。

需要更多協助嗎?

您可以隨時詢問 Excel 技術社群中的專家,或是在 Answers 社群取得支援。

另請參閱

快速參考卡:VLOOKUP 重新檢查
快速參考卡:VLOOKUP 疑難排解秘訣
如何修正 VLOOKUP #VALUE! 錯誤
如何更正 VLOOKUP 函數中的 #N/A 錯誤
Excel 公式概觀
如何避免公式出錯
偵測公式中的錯誤
Excel 函數 (按字母順序排序)
Excel 函數 (依類別)
VLOOKUP (免費預覽)

需要更多協助?

擴展您的技能
探索訓練

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?

感謝您的意見反應!

×