VLOOKUP
全部顯示
全部隱藏
在表格數(shù)組的首列查找值,并由此返回表格數(shù)組當前行中其他列的值。
VLOOKUP 中的 V 表示垂直方向。當比較值位于需要查找的數(shù)據左邊的一列時,可以使用 VLOOKUP,而不用 HLOOKUP。
語法
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value為需要在表格數(shù)組 (數(shù)組:用于建立可生成多個結果或可對在行和列中排列的一組參數(shù)進行運算的單個公式。數(shù)組區(qū)域共用一個公式;數(shù)組常量是用作參數(shù)的一組常量。)第一列中查找的數(shù)值。Lookup_value 可以為數(shù)值或引用。若 lookup_value 小于 table_array 第一列中的最小值,VLOOKUP 將返回錯誤值 #N/A。
Table_array為兩列或多列數(shù)據。請使用對區(qū)域的引用或區(qū)域名稱。table_array 第一列中的值是由 lookup_value 搜索的值。這些值可以是文本、數(shù)字或邏輯值。不區(qū)分大小寫。
Col_index_num為 table_array 中待返回的匹配值的列序號。Col_index_num 為 1 時,返回 table_array 第一列中的數(shù)值;col_index_num 為 2,返回 table_array 第二列中的數(shù)值,以此類推。如果 col_index_num :
小于 1,VLOOKUP 返回錯誤值 #VALUE!。
大于 table_array 的列數(shù),VLOOKUP 返回錯誤值 #REF!。
Range_lookup為邏輯值,指定希望 VLOOKUP 查找精確的匹配值還是近似匹配值:
如果為 TRUE 或省略,則返回精確匹配值或近似匹配值。也就是說,如果找不到精確匹配值,則返回小于 lookup_value 的最大數(shù)值。
table_array 第一列中的值必須以升序排序;否則 VLOOKUP 可能無法返回正確的值。可以選擇“數(shù)據”菜單上的“排序”命令,再選擇“遞增”,將這些值按升序排序。有關詳細信息,請參閱默認排序次序。
如果為 FALSE,VLOOKUP 將只尋找精確匹配值。在此情況下,table_array 第一列的值不需要排序。如果 table_array 第一列中有兩個或多個值與 lookup_value 匹配,則使用第一個找到的值。如果找不到精確匹配值,則返回錯誤值 #N/A。
說明
在 table_array 第一列中搜索文本值時,請確保 table_array 第一列中的數(shù)據沒有前導空格、尾隨空格、不一致的直引號(' 或 ")、彎引號(‘或“)或非打印字符。在上述情況下,VLOOKUP 可能返回不正確或意外的值。有關用于清除文本數(shù)據的函數(shù)的詳細信息,請參閱文本和數(shù)據函數(shù)。
在搜索數(shù)字或日期值時,請確保 table_array 第一列中的數(shù)據未保存為文本值。否則,VLOOKUP 可能返回不正確或意外的值。有關詳細信息,請參閱將保存為文本的數(shù)字轉換為數(shù)字值。
如果 range_lookup 為 FALSE 且 lookup_value 為文本,則可以在 lookup_value 中使用通配符、問號 (?) 和星號 (*)。問號匹配任意單個字符;星號匹配任意字符序列。如果您要查找實際的問號或星號本身,請在該字符前鍵入波形符 (~)。
示例 1
本示例搜索大氣特征表的“密度”列以查找“粘度”和“溫度”列中對應的值。(該值是在海平面 0 攝氏度或 1 個大氣壓下對空氣進行測定的結果。)
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
本示例搜索嬰幼兒用品表中的“貨品 ID”列,并在“成本”和“漲幅”列中查找與之匹配的值,以計算價格和測試條件。
1
2
3
4
5
6
A B C D
貨品 ID貨品成本漲幅
ST-340 童車 ¥145.6730%
BI-567 圍嘴 ¥3.5640%
DI-328 尿布¥21.4535%
WI-989 柔濕紙巾¥5.1240%
AS-469 吸出器 ¥2.5645%
公式 說明(結果)
= VLOOKUP("DI-328", A2
6, 3, FALSE) * (1 + VLOOKUP("DI-328", A2
6, 4, FALSE))漲幅加上成本,計算尿布的零售價。(¥28.96)
= (VLOOKUP("WI-989", A2
6, 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
本示例搜索員工表的 ID 列并查找其他列中的匹配值,以計算年齡并測試錯誤條件。
1
2
3
4
5
6
7
A B C D E
ID姓氏名字職務 出生日期
1 李 小明 銷售代表12/8/1968
2 林 彩瑜 銷售部副總 2/19/1952
3 王 志東 銷售代表 8/30/1963
4 潘 金 銷售代表 9/19/1958
5 林 丹 銷售經理 3/4/1955
6 蘇 術平 銷售代表7/2/1963
公式 說明(結果)
=INT(YEARFRAC(DATE(2004,6,30), VLOOKUP(5,A2:E7,5, FALSE), 1)) 針對 2004 財政年度,查找 ID 為 5 的員工的年齡。使用 YEARFRAC 函數(shù),以此財政年度的結束日期減去出生日期,然后使用 INT 函數(shù)將結果以整數(shù)形式顯示。(49)
=IF(ISNA(VLOOKUP(5,A2:E7,2,FALSE)) = TRUE, "未找到員工", VLOOKUP(5,A2:E7,2,FALSE)) 如果有 ID 為 5 的員工,則顯示該員工的姓氏;否則,顯示消息“未找到員工”。(林)
當 VLOOKUP 函數(shù)返回錯誤值 #NA 時,ISNA 函數(shù)返回值 TRUE。
=IF(ISNA(VLOOKUP(15,A3:E8,2,FALSE)) = TRUE, "未找到員工", VLOOKUP(15,A3:E8,2,FALSE)) 如果有 ID 為 15 的員工,則顯示該員工的姓氏;否則,顯示消息“未找到員工”。(未找到員工)
當 VLOOKUP 函數(shù)返回錯誤值 #NA 時,ISNA 函數(shù)返回值 TRUE。
=VLOOKUP(4,A2:E7,3,FALSE) & " " & VLOOKUP(4,A2:E7,2,FALSE) & "是" & VLOOKUP(4,A2:E7,4,FALSE) & "。" 對于 ID 為 4 的員工,將三個單元格的值連接為一個完整的句子。(潘金是銷售代表。)
注釋上例中的第一個公式使用的是 YEARFRAC 函數(shù)。如果該函數(shù)不可用并返回錯誤 #NAME?,請安裝和加載“分析工具庫”加載宏。