关于VLOOKUP函数的用法

“Lookup”的汉语意思是“查找”,在Excel中与“Lookup”相关的函数有三个:VLOOKUP、HLOOKUO和LOOKUP。下面介绍VLOOKUP函数的用法。

一、功能 
在表格的首列查找指定的数据,并返回指定的数据所在行中的指定列处的数据。

二、语法 
标准格式: 
VLOOKUP(lookup_value,table_array,col_index_num , range_lookup)

三、语法解释 
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(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进行运算。

假设有以下两个表格: 
表1: 
姓名 身份证 学科 成绩 
张三 310111 物理 A 
李斯 310112 化学 B 
王五 310113 政治 A 
赵六 310114 物理 B 
张三 310111 政治 C 
赵六 310114 语文 B 
刘备 310115 英语 D 

表2: 
姓名 身份证 住址 学科 成绩 
曹操 319723 陕西 
马超 310197 甘肃 
赵云 319784 黑龙江 
李斯 310112 浙江 
刘备 310115 江苏 
张三 310111 上海 

请问:如何快速的将表2的学科和成绩自动填入?  

直接使用VLOOKUP即可。 
示例如下: 

=VLOOKUP($B1,Sheet1!$B$1:$C$5,2,FALSE) 

涵义:在Sheet1的单元格区间B1:C5,查找符合条件为:第一列与当前工作表单元格B1的值相等的第二列的值。 
$B1 条件值 
Sheet1!$B$1:$C$5 要查找区间 (注意:请使用绝对引用) 
2 查找的结果为区域中的第几列 
FALSE 表示精确查找

*具体应用中大家注意各个参数的意义!调整参数来满足个人需要。

 

 

 

功能                
这个函数在表格左侧的行标题中查找指定的内容          
当找到时,它再挑选出该行对应的指定列的单元格内容。        
                 
语法                
                 
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)      
Lookup_value   为需要在数组第一列中查找的数值。Lookup_value 可以为数值、引用或文本字符串。
Table_array   为需要在其中查找数据的数据表。可以使用对区域或区域名称的引用,例如数据库或数据清单。
如果 range_lookup 为 TRUE,则 table_array 的第一列中的数值必须按升序排列:…、-2、-1、0、1、2、…、-Z、FALSE、TRUE;否则,函数 VLOOKUP 不能返回正确的数值。如果 range_lookup 为 FALSE,table_array 不必进行排序。
通过在“数据”菜单中的“排序”中选择“升序”,可将数值按升序排列。      
Table_array 的第一列中的数值可以为文本、数字或逻辑值。        
文本不区分大小写。              
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!。
Range_lookup   为一逻辑值,指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值;如果 range_value 为 FALSE,函数 VLOOKUP 将返回精确匹配值。如果找不到,则返回错误值 #N/A。
说明                
如果函数 VLOOKUP 找不到 lookup_value,且 range_lookup 为 TRUE,则使用小于等于 lookup_value 的最大值。
如果 lookup_value 小于 table_array 第一列中的最小数值,函数 VLOOKUP 返回错误值 #N/A。  
如果函数 VLOOKUP 找不到 lookup_value 且 range_lookup 为 FALSE,函数 VLOOKUP 返回错误值 #N/A。
posted @ 2014-02-28 12:04  HuoLarry  阅读(450)  评论(0编辑  收藏  举报