关于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。 |