關於VLOOKUP函數的用法
“Lookup”的漢語意思是“查找”,在Excel中與“Lookup”相關的函數有三個:VLOOKUP、HLOOKUO和LOOKUP。下面介紹VLOOKUP函數的用法。
一、功能
在表格的首列查找指定的數據,並返回指定的數據所在行中的指定列處的數據。
二、語法
標準格式:
VLOOKUP(lookup_value,table_array,col_index_num , range_lookup)
解釋:
VLOOKUP(‘你要檢索的內容或指定單元格’,‘你要檢索的範圍,檢索到內容時返回你檢索表的第幾列中的內容’, ‘真或假參數真代表查詢的表已經排序,假代表沒有排序’)
例:VLOOKUP(A2,Sheet2!$A1:$B10,2,FALSE)
說明:在表SHEET2中檢索當前表中A2中的內容,如果檢索到,就返回表SHEET2中B2中的內容,因爲B2是表SHEET2中的第二列,所以 VLOOKUP的第三個參數,使用2,表示如果滿足條件,就返回查詢表的第二列,最後的參數FALSE表示‘假’,意思是被查詢的表,沒有排序,這種情況下,會從被查詢的表中第一行開始,一直查詢到結束。
三、語法解釋
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)可以寫爲:
VLOOKUP(需在第一列中查找的數據,需要在其中查找數據的數據表,需返回某列值的列號,邏輯值True或False)
1.Lookup_value爲“需在數據表第一列中查找的數據”,可以是數值、文本字符串或引用。
2.Table_array 爲“需要在其中查找數據的數據表”,可以使用單元格區域或區域名稱等。
⑴如果 range_lookup 爲 TRUE或省略,則 table_array 的第一列中的數值必須按升序排列,否則,函數 VLOOKUP 不能返回正確的數值。
如果 range_lookup 爲 FALSE,table_array 不必進行排序。
⑵Table_array 的第一列中的數值可以爲文本、數字或邏輯值。若爲文本時,不區分文本的大小寫。
3.Col_index_num 爲table_array 中待返回的匹配值的列序號。
Col_index_num 爲 1 時,返回 table_array 第一列中的數值;
Col_index_num 爲 2 時,返回 table_array 第二列中的數值,以此類推。
如果Col_index_num 小於 1,函數 VLOOKUP 返回錯誤值 #VALUE!;
如果Col_index_num 大於 table_array 的列數,函數 VLOOKUP 返回錯誤值 #REF!。
4.Range_lookup 爲一邏輯值,指明函數 VLOOKUP 返回時是精確匹配還是近似匹配。如果爲 TRUE 或省略,則返回近似匹配值,也就是說,如果找不到精確匹配值,則返回小於lookup_value 的最大數值;如果 range_value 爲 FALSE,函數 VLOOKUP 將返回精確匹配值。如果找不到,則返回錯誤值 #N/A。
四、應用例子
A B C D
1 編號 姓名 工資 科室
2 2005001 周杰倫 2870 辦公室
3 2005002 蕭亞軒 2750 人事科
4 2005006 鄭智化 2680 供應科
5 2005010 屠洪剛 2980 銷售科
6 2005019 孫楠 2530 財務科
7 2005036 孟庭葦 2200 工 會
A列已排序(第四個參數缺省或用TRUE)
VLOOKUP(2005001,A1:D7,2,TRUE) 等於“周杰倫”
VLOOKUP(2005001,A1:D7,3,TRUE) 等於“2870”
VLOOKUP(2005001,A1:D7,4,TRUE) 等於“辦公室”
VLOOKUP(2005019,A1:D7,2,TRUE) 等於“孫楠”
VLOOKUP(2005036,A1:D7,3,TRUE) 等於“2200”
VLOOKUP(2005036,A1:D7,4,TRUE) 等於“工 會”
VLOOKUP(2005036,A1:D7,4) 等於“工 會”
若A列沒有排序,要得出正確的結果,第四個參數必須用FALAE
VLOOKUP(2005001,A1:D7,2,FALSE) 等於“周杰倫”
VLOOKUP(2005001,A1:D7,3,FALSE) 等於“2870”
VLOOKUP(2005001,A1:D7,4,FALSE) 等於“辦公室”
VLOOKUP(2005019,A1:D7,2,FALSE) 等於“孫楠”
VLOOKUP(2005036,A1:D7,3,FALSE) 等於“2200”
VLOOKUP(2005036,A1:D7,4,FALSE) 等於“工 會”
五、關於TRUE和FALSE的應用
先舉個例子,假如讓你在數萬條記錄的表格中查找給定編號的某個人,假如編號已按由小到大的順序排序,你會很輕鬆地找到這個人;假如編號沒有排序,你只好從上到下一條一條地查找,很費事。
用VLOOKUP查找數據也是這樣,當第一列已排序,第四個參數用TRUE(或確省),Excel會很輕鬆地找到數據,效率較高。當第一列沒有排序,第四個參數用FALSE,Excel會從上到下一條一條地查找,效率較低。
筆者覺得,若要精確查找數據,由於計算機運算速度很快,可省略排序操作,直接用第四個參數用FALSE即可。
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
本示例搜索大氣特徵表的“密度”列以查找“粘度”和“溫度”列中對應的值。(該值是在海平面 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.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
本示例搜索員工表的 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 函數,以此財政年度的結束日期減去出生日期,然後使用 INT 函數將結果以整數形式顯示。(49)
=IF(ISNA(VLOOKUP(5,A2:E7,2,FALSE)) = TRUE, "未找到員工", VLOOKUP(5,A2:E7,2,FALSE)) 如果有 ID 爲 5 的員工,則顯示該員工的姓氏;否則,顯示消息“未找到員工”。(林)
當 VLOOKUP 函數返回錯誤值 #NA 時,ISNA 函數返回值 TRUE。
=IF(ISNA(VLOOKUP(15,A3:E8,2,FALSE)) = TRUE, "未找到員工", VLOOKUP(15,A3:E8,2,FALSE)) 如果有 ID 爲 15 的員工,則顯示該員工的姓氏;否則,顯示消息“未找到員工”。(未找到員工)
當 VLOOKUP 函數返回錯誤值 #NA 時,ISNA 函數返回值 TRUE。
=VLOOKUP(4,A2:E7,3,FALSE) & " " & VLOOKUP(4,A2:E7,2,FALSE) & "是" & VLOOKUP(4,A2:E7,4,FALSE) & "。" 對於 ID 爲 4 的員工,將三個單元格的值連接爲一個完整的句子。(潘金是銷售代表。)
註釋 上例中的第一個公式使用的是 YEARFRAC 函數。如果該函數不可用並返回錯誤 #NAME?,請安裝和加載“分析工具庫”加載宏。
操作方法
在“工具”菜單上,單擊“加載宏”。
在“可用加載宏”列表中,選中“分析工具庫”框,然後單擊“確定”。
如有必要,請按照安裝程序中的說明操作。
筆者覺得,若要精確查找數據,由於計算機運算速度很快,可省略排序操作,直接用第四個參數用FALSE即可。
轉 VLookup 使用
2007-03-24 20:23
最近愛上了VLOOKUP,有人還對它進行了更新。因爲它的漏洞就是隻能返回重複值得第一個值。下面就詳細來敘述一下吧!
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value 爲需要在Table_array第一列中查找的數值。
可以爲數值、引用或文本字符串。需要注意的是類型必須與table_array第一列的類型一致。
查找文本時,文本不區分大小寫;可以使用通配符“*”、“?”。
Table_array 爲需要在其中查找數據的數據表。
可以使用對區域或區域名稱的引用、常數數組、計算後的內存數組。
對區域引用時,可以引用整列,excel會自動判斷使用區域。
該參數的第一列必須包含查找的內容,其它列包含需返回的內容;返回內容的列序號由下個參數指定。
Col_index_num 爲table_array中待返回的匹配值的列序號。
如爲1時,返回table_array第一列中的數值;爲2,返回table_array第二列中的數值,以此類推。
如果col_index_num小於1,函數 VLOOKUP 返回錯誤值值 #VALUE!;
如果col_index_num大於table_array的列數,函數 VLOOKUP 返回錯誤值 #REF!。
Range_lookup 爲一邏輯值,指明函數VLOOKUP返回時是精確匹配還是近似匹配。
如果爲TRUE或省略,則返回近似匹配值,也就是說,如果找不到精確匹配值,則返回小於lookup_value的最大數值;
近似匹配查詢一般用於數值的查詢,table_array的第一列必須按升序排列;否則不能返回正確的結果。
如果range_value爲FALSE(或0),函數VLOOKUP將返回精確匹配值。
此時,table_array不必進行排序。如果找不到,則返回錯誤值#N/A;可isna檢測錯誤後使用if判斷去除錯誤信息。
=====================================================================
VLOOKUP 經常會出現錯誤的#N/A,下面是幾種可能性:
數據有空格或者數據類型不一致。
可以在lookup_value 前用TRIM()將空格去除。
如果格式不一致,可以將數值強制轉換成文本,lookup_value之後用&跟""表示的空字符串。
將文本轉換成數值,lookup_value*1進行運算。
=====================================================================