VLOOKUP

在表格陣列的第一欄中搜尋某個數值,並傳回該表格陣列中同一列之其他欄中的數值。

VLOOKUP 中的「V」代表「垂直」。當您比對的數值位於您想要尋找的資料左方的某一欄中時,請使用 VLOOKUP,而非 HLOOKUP。

語法

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

Lookup_value    在表格陣列 (陣列:用來建立產生多個結果或運算一組以列及欄排列之引數的單一公式。陣列範圍共用一個公式;一個陣列常數是用作一個引數的一組常數。)的第一欄中搜尋的數值Lookup_value 可以是數值,也可以是參照位址。當 lookup_value 小於 table_array 第一欄中的最小值時,VLOOKUP 將會傳回錯誤值 #N/A。

Table_array    兩欄以上的資料。請使用參照位址來指向某個範圍或範圍名稱。table_array 第一欄中的值即為 lookup_value 所搜尋的值。這些值可以是文字、數字或邏輯值 (不分大小寫)。

Col_index_num    table_array 中的欄號;相符的值將從該欄中傳回。如果 col_index_num 引數值為 1,則傳回 table_array 第一欄中的值;如果 col_index_num 引數值為 2,則傳回 table_array 第二欄中的值,依此類推。如果 col_index_num:

  • 小於 1,則 VLOOKUP 會傳回錯誤值 #VALUE!。
  • 大於 table_array 中的欄數,則 VLOOKUP 會傳回錯誤值 #REF!。

Range_lookup    一個邏輯值,用來指定 VLOOKUP 應該要尋找完全符合還是部分符合的值:

  • 如果此引數值為 TRUE 或被省略了,則傳回完全符合或部分符合的值。如果找不到完全符合的值,將會傳回僅次於 lookup_value 的值。

table_array 第一欄中的值必須以遞增順序排序;否則,VLOOKUP 可能無法提供正確的值。只要在 [資料] 功能表中選取 [排序] 指令,再選取 [遞增],即可將值以遞增順序排序。如需詳細資訊,請參閱預設排序順序

  • 如果此引數值為 FALSE,則 VLOOKUP 函數只會尋找完全符合的值。在此情況下,table_array 第一欄中的值便不需要排序。如果 table_array 第一欄中有兩個以上的值與 lookup_value 相符,將會使用第一個找到的值。如果找不到完全符合的值,則傳回錯誤值 #N/A。

註解

  • 在 table_array 的第一欄中搜尋文字值時,請確認 table_array 第一欄中的資料不得包含前置空格、尾隨空格、不成對的標準引號 ( ' 或 " ) 和波浪形引號 ( ‘ 或 “) 以及非列印字元。否則,VLOOKUP 可能會提供錯誤或與預期不符的值。如需進一步瞭解有哪些函數可以用來「清理」文字資料,請參閱文字和資料函數
  • 搜尋數字或日期值時,請確認 table_array 第一欄中的資料並未儲存為文字值。否則,VLOOKUP 可能會提供錯誤或與預期不符的值。如需詳細資訊,請參閱將儲存成文字的數值轉換成數值
  • 如果 range_lookup 為 FALSE 且 lookup_value 為文字,則您需要在 lookup_value 中使用萬用字元、問號 (?) 和星號 (*)。問號可替代任一字元;星號可替代任一系列的字元。如果您確實要尋找實際的問號或星號,請在該字元前鍵入波狀符號 (~)。

範例 1

請將範例複製到空白的工作表,以便瞭解範例內容。

顯示如何複製範例

  1. 建立空白的活頁簿或工作表。
  2. 在 [說明] 主題中選取範例。

 附註   請不要選取列或欄標題。

選取 [說明] 中的範例

選取 [說明] 中的範例
  1. 按 CTRL+C 鍵。
  2. 在工作表中,選取儲存格 A1,並按下 CTRL+V 鍵。
  3. 如果要在檢視結果與檢視傳回結果的公式之間切換,請按下 CTRL+` (重音符),或是在 [公式] 索引標籤的 [公式稽核] 群組中,按一下 [顯示公式] 按鈕。

本範例會在一份大氣特性表的 [密度] 欄中進行搜尋,以找出 [黏性] 和 [溫度] 欄中的對應值。(下表中的值適用於 1 大氣壓的空氣,亦即位於海平面、攝氏溫度為 0 度的空氣。)

 
1
2
3
4
5
6
7
8
9
10
A B C
密度 黏性 溫度
0.457 3.55 500
0.525 3.25 400
0.616 2.93 300
0.675 2.75 250
0.746 2.57 200
0.835 2.38 150
0.946 2.17 100
1.09 1.95 50
1.29 1.71 0
公式 說明 (結果)
=VLOOKUP(1,A2:C10,2) 在欄 A 中尋找與 1 接近的值,在欄 A 中找到小於或等於 1 的最大值 (0.946),再傳回欄 B 中同一列的值。(2.17)
=VLOOKUP(1,A2:C10,3,TRUE) 在欄 A 中尋找與 1 接近的值,在欄 A 中找到小於或等於 1 的最大值 (0.946),再傳回欄 C 中同一列的值。(100)
=VLOOKUP(.7,A2:C10,3,FALSE) 在欄 A 中搜尋與 0.7 完全相符的值。由於在欄 A 中找不到完全相符的值,所以傳回一個錯誤值。(#N/A)
=VLOOKUP(0.1,A2:C10,2,TRUE) 在欄 A 中尋找與 0.1 接近的值。由於 0.1 小於欄 A 中的最小值,所以傳回一個錯誤值。(#N/A)
=VLOOKUP(2,A2:C10,2,TRUE) 在欄 A 中尋找與 2 接近的值,在欄 A 中找到小於或等於 2 的最大值 (1.29),再傳回欄 B 中同一列的值。(1.71)

範例 2

請將範例複製到空白的工作表,以便瞭解範例內容。

顯示如何複製範例

  1. 建立空白的活頁簿或工作表。
  2. 在 [說明] 主題中選取範例。

 附註   請不要選取列或欄標題。

選取 [說明] 中的範例

選取 [說明] 中的範例
  1. 按 CTRL+C 鍵。
  2. 在工作表中,選取儲存格 A1,並按下 CTRL+V 鍵。
  3. 如果要在檢視結果與檢視傳回結果的公式之間切換,請按下 CTRL+` (重音符),或是在 [公式] 索引標籤的 [公式稽核] 群組中,按一下 [顯示公式] 按鈕。

本範例會在一份嬰幼兒產品表的 [商品代碼] 欄中進行搜尋,並比對 [成本] 和 [加價率] 欄中的值,以計算出價格,並針對各種情況進行測試。

 
1
2
3
4
5
6
A B C D
商品代碼 商品 成本 加價率
ST-340 嬰兒車 $145.67 30%
BI-567 圍兜 $3.56 40%
DI-328 尿布 $21.45 35%
WI-989 溼紙巾 $5.12 40%
AS-469 吸出器 $2.56 45%
公式 說明 (結果)
= VLOOKUP("DI-328", A2:D6, 3, FALSE) * (1 + VLOOKUP("DI-328", A2:D6, 4, FALSE)) 將加價率與成本相加,以計算出尿布的零售價。($28.96)
= (VLOOKUP("WI-989", A2:D6, 3, FALSE) * (1 + VLOOKUP("WI-989", A2:D6, 4, FALSE))) * (1 - 20%) 將零售價減去指定的折扣,以計算出溼紙巾的折扣價。($5.73)
= IF(VLOOKUP(A2, A2:D6, 3, FALSE) >= 20, "加價率為 " & 100 * VLOOKUP(A2, A2:D6, 4, FALSE) &"%", "成本低於 $20.00") 如果商品的成本大於或等於 $20.00,則顯示 "加價率為 nn%",否則就顯示 "成本低於 $20.00"。(加價率為 30%)
= IF(VLOOKUP(A3, A2:D6, 3, FALSE) >= 20, "加價率為:" & 100 * VLOOKUP(A3, A2:D6, 4, FALSE) &"%", "成本為 $" & VLOOKUP(A3, A2:D6, 3, FALSE)) 如果商品的成本大於或等於 $20.00,則顯示 "加價率為 nn%",否則就顯示 "成本為 $n.nn"。(成本為 $3.56)

範例 3

請將範例複製到空白的工作表,以便瞭解範例內容。

顯示如何複製範例

  1. 建立空白的活頁簿或工作表。
  2. 在 [說明] 主題中選取範例。

 附註   請不要選取列或欄標題。

選取 [說明] 中的範例

選取 [說明] 中的範例
  1. 按 CTRL+C 鍵。
  2. 在工作表中,選取儲存格 A1,並按下 CTRL+V 鍵。
  3. 如果要在檢視結果與檢視傳回結果的公式之間切換,請按下 CTRL+` (重音符),或是在 [公式] 索引標籤的 [公式稽核] 群組中,按一下 [顯示公式] 按鈕。

本範例會在一份員工表格的 [員工編號] 欄中進行搜尋,並比對其他欄中的值,以計算出員工的年紀,並針對各種錯誤情況進行測試。

 
1
2
3
4
5
6
7
A B C D E
員工編號 職稱 出生日
1 Davolio Nancy 業務代表 12/8/1968
2 Fuller Andrew 業務部門副主管 2/19/1952
3 Leverling Janet 業務代表 8/30/1963
4 Peacock Margaret 業務代表 9/19/1958
5 Buchanan Steven 業務經理 3/4/1955
6 Suyama Michael 業務代表 7/2/1963
公式 說明 (結果)
=INT(YEARFRAC(DATE(2004,6,30), VLOOKUP(5,A2:E7,5, FALSE), 1)) 在 2004 年會計年度,找出員工編號等於 5 之員工的年紀。使用 YEARFRAC 函數將會計年度最後一天的日期減去出生日期,並使用 INT 函數將結果顯示為整數。(49)
=IF(ISNA(VLOOKUP(5,A2:E7,2,FALSE)) = TRUE, "找不到員工", VLOOKUP(5,A2:E7,2,FALSE))

如果找到了員工編號為 5 的員工,則顯示該名員工的姓氏,否則就顯示「找不到員工」訊息。(Buchanan)

當 VLOOKUP 函數傳回錯誤值 #NA 時,ISNA 函數將會傳回 TRUE 值。

=IF(ISNA(VLOOKUP(15,A3:E8,2,FALSE)) = TRUE, "找不到員工", VLOOKUP(15,A3:E8,2,FALSE))

如果找到了員工編號為 15 的員工,則顯示該名員工的姓氏,否則就顯示「找不到員工」訊息。(找不到員工)

當 VLOOKUP 函數傳回錯誤值 #NA 時,ISNA 函數將會傳回 TRUE 值。

=VLOOKUP(4,A2:E7,3,FALSE) & " " & VLOOKUP(4,A2:E7,2,FALSE) & " 的職稱是" & VLOOKUP(4,A2:E7,4,FALSE) & "。" 針對員工編號為 4 的員工,將其三個儲存格的值連接成一個完整的句子。(Margaret Peacock 的職稱是業務代表。)

 附註   上述範例的第一個公式使用 YEARFRAC 函數。如果沒有可用的函數,就會傳回 #NAME? 錯誤,此時請安裝 [分析工具箱] 增益集。

顯示作法

  1. [工具] 功能表,按一下 [增益集]
  2. [現有的增益集] 清單中,選取 [分析工具箱] 方塊,再按一下 [確定]
  3. 必要的話,請遵循安裝程式的指示。
 
 
適用:
Excel 2003