VLOOKUP的基本用法(附实例)
贡献者:bntrees  日期:2008-09-14  阅读:24256 
相关标签:et2007 函数 VLOOKUP
LOOKUP和VLOOKUP是在ET中经常用到的两个函数,其基本功能就是在数组中,根据给出的某一列中的值,返回该数组中另一列中对应的值。

  下面我们就以一下论坛网友提供的例子来分别介绍一下它们的基本用法和异同点。

  一、LOOKUP函数的基本用法

  LOOKUP函数的使用格式为:=LOOKUP(查值,查向量,返回向量)

  其中“查向量”和“返回向量”均为一维数组。

  如下面的函数:

  =LOOKUP(3,{1,2,3,4,5,6,7,8,9,10,11,12},{"子鼠","丑牛","寅虎","卯兔","辰龙","巳蛇","午马","未羊","申猴","酉鸡","戌狗","亥猪"})

  “查值”是3,则在“查向量”中到3,并在“返回向量”中到与3在“查向量”中相对应的值,即“寅虎”,并将“寅虎”返回。

  下面我们看一个实例,如图1所示,Sheet1为某基层卫生院的住院登记表。
图1
  在Sheet2中有一个农合证号与村名相对应的列表(图2)
图2

  现在需要在“家庭住址”一列(F3:F25)中输入公式,利用LOOKUP函数根据“农合证号”得出其家庭住址所在村名。公式如下:


  LOOKUP(D3,Sheet2!$A$2:$A$13,Sheet2!$B$2:$B$13)

  即在Sheet2的A2:A13区域(农合证号)中查D3单元格中的农合证号,并返回B2:B13区域中对应的村名。把此公式填充至整个F列,则实现所有“住址”自动填充。

  二、VLOOKUP函数的基本用法

  以上功能,用VLOOKUP也能轻松实现。所不同的是,VLOOKUP的查范围是多维数组,其使用格式为:

  VLOOKUP(查值,数据表,列序数,[匹配条件])

  其中的“查值”与LOOKUP中的“查值”一样,而“数据表”则是一个多维数组,可以存放多行多列的复杂数据,而“列序数”则是要返回的数据所在列的序数,“匹配条件”为“TRUE”
时,为模糊询,而“匹配条件”为“FALSE”时,则为精确查询,默认为“TRUE”,即模糊查询。

  下面我们还以上面的表格为例,用VLOOKUP改写公式如下:

  VLOOKUP(D3,Sheet2!$A$2:$B$13,2,1)

  此公式的含义为:

  在Sheet2的A2:B13区域查D3单元格中的数据,并将此区域第2列(即“村名”)相对应的数据返回。“匹配条件”为1,即TRUE,使用模糊匹配方式,如果“匹配条件”为“0”(即FALSE),则采取精确匹配方式,那样的话,非列表中的数据都将返回出错信息“#N/A”。

  三、完善公式

  以上两种方法,都能实现所需要的功能。但还有一点不够完美,就是当前来就诊的病人没有“农合证号”时,“住址”一列会显示出错信息“#N/A”,我们可以用一个IF函数来使这些人的住址不现显示出错信息。

  =IF(D3="","",VLOOKUP(D3,Sheet2!$A$2:$B$13,2,1))
 
  =IF(D3="","非农合用户",VLOOKUP(D3,Sheet2!$A$2:$B$13,2,1))

  效果如图3所示。
利用VLOOKUP函数 轻松查询表格数据
贡献者:adzzxx  日期:2008-02-29  阅读:12186 
相关标签:et2007 函数 VLOOKUP
陈洪军
在日常工作中,我们会经常用wps表格处理工资和学生成绩等数据。如果单位人员很多,手工查询个人数据不太方便。利用 VLOOKUP 函数,查询个人信息则变得十分便捷。下面以开工资介绍为例进行说明。
一、 建立单位工资基本信息
将工作表标签Sheet1命名为“工资”,在该工作表内输入姓名及各项工资内容。如图一


二、 建立工资介绍页面
将工作表标签Sheet2命名为“工资介绍”,输入所需要填写的内容,其中工资项目可以复制“工资”工作表中的表格。 如图二

三、 建立函数
在“工资介绍”工作表B9单元格中输入函数“=VLOOKUP(工资介绍!$A$9,(工资!$A$4:$AA$9),2,FALSE)”,该函数的含义是:根据本工作表单元格A9中的数据信 息,在“工资”工作表中A4至AA9的范围内查询与本工作表A9相同的信息,并返回相同信息单元格后第2个单元格的内容。将该函数向右复制到各单元格中,在C9中将括号中的2改为3,在D9中将2改为4,依此类推。 如图三



四、 轻松查询
函数建立完毕后,我们如果要为李四开具工资介绍,只需在“工资介绍”工作表的A9单元格中输入“李四”,其所有工资信息将自动显示在后面的对应单元格。如图四



上述方法适用于学校查询学生成绩等方面。
vlookup函数应用实例一:
  问题:如下图,已知表sheet1中的数据如下,如何在数据表二 sheet2 中如下引用:当学号随机出现的时候,如何在B列显示其对应的物理成绩?

 
  根据问题的需求,这个公式应该是:=vlookup(a2,sheet1!$a$2:$f$100,6,true)
详细说明一下在此vlookup函数例子中各个参数的使用说明:
  第一,vlookup是垂直方向的判断,如果是水平方向的判断可使用Hlookup函数
  第二,a2 是判断的条件,也就是说如果sheet2表中a列对应的数据和sheet1表中的数据相同方能引用;
  第三,sheet1!$a$2:$f$100 是数据跟踪的区域,因为需要引用的数据在f列,所以跟踪的区域至少在f列,$是绝对引用。
  第四,6 这是返回什么数的列数,如上图的物理是第6列,所以应该是6,如果要求英语的数值,那么此处应该是5。
  第五,是否绝对引用,如果是就输入 true 如果是近似即可满足条件,那么输入false (近似值主要用于带小数点的财务、运算等)。
  结果如下图:


  vlookup函数实例讲解二:说明函数=VLOOKUP(f1,A1:E100,2,FALSE)的意思。
  意思是:在A1:E100区域查f1的值,到后,返回从a开始算的第2列值(即b列),false为精确查的必备参数。

  vlookup函数实例讲解三:

 
  上图,A2:B5为参照数组范围,E2为欲搜寻的值,传回数组表的欲对照的栏为第2栏(姓名),在F2输入=VLOOKUP(E2,A2:B5,2,FALSE)将会到155003是王小华,然后显示出来。

  vlookup函数实例讲解四: 
  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。

  解释:关于TRUE和FALSE的应用
  先举个例子,假如让你在数万条记录的表格中查给定编号的某个人,假如编号已按由小
到大的顺序排序,你会很轻松地到这个人;假如编号没有排序,你只好从上到下一条一条地查,很费事。 用VLOOKUP查数据也是这样,当第一列已排序,第四个参数用TRUE(或确省),Excel会很轻松地到数据,效率较高。当第一列没有排序,第四个参数用FALSE,Excel会从上到下一条一条地查,效率较低。 个人觉得,若要精确查数据,由于计算机运算速度很快,可省略排序操作,直接用第四个参数用FALSE即可。

  vlookup函数实例讲解五:vlookup模糊匹配
  本示例搜索员工表的 ID 列并查其他列中的匹配值,计算并测试错误条件。
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
公式 说明(结果)
  =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,2,FALSE) & " " & VLOOKUP(4,A2:E7,3,FALSE) & "是" & VLOOKUP(4,A2:E7,4,FALSE) & "。" 对于 ID 为 4 的员工,将三个单元格的值连接为一个完整的句子。(潘金是销售代表。)
  利用vlookup函数进行查询系统设计,请详见:vlookup函数应用实例(二),网址是:www.ittribalwo/show.asp?id=379 
Excel函数VLOOKUP的应用实例 [原文地址]
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 可能返回不正确或意外的值。有关详细信息,请参阅 CLEAN 和 TRIM。
在搜索数字或日期值时,请确保 table_array 第一列中的数据未存储为文本值。否则,VLOOKUP 可能返回不正确或意外的值。有关详细信息,请参阅将保存为文本的数字转换为数字值。
如果 range_lookup 为 FALSE 且 lookup_value 为文本,则可以在 lookup_value 中使用通配符、问号 (?) 和星号 (*)。问号匹配任意单个字符;星号匹配任意字符序列。如果要查实际的问号或星号,请在该字符前键入波形符 (~)。

例子

=VLOOKUP(A1,Sheet2!A:B,2,FALSE)
在Sheet2工作表的A列查等于本工作表A1的值的单元格,到后返回Sheet2工作表同一行中B列的值。如果未到,返回一个错误信息“#N/A”。
第一个参数是要查的值,第二个参数是查和引用的范围,第三个参数是相对于查到的值要引用那一列的值(查列为1,往右依次为2、3……),第四个参数是查时是否要精确匹配(可用1和0或者TRUE和FALSE)。
EXCEL函数中VLOOKUP的使用方法举例(转)
2009年10月30日 星期五 00:39
VLOOKUP函数
在表格或数值数组的首列查指定的数值,并由此返回表格或数组中该数值所在行中指定列处的数值。
这里所说的“数组”,可以理解为表格中的一个区域。数组的列序号:数组的“首列”,就是这个区域的第一纵列,此列右边依次为第2列、3列……。假定某数组区域为B2:E10,那么,B2:B10为第1列、C2:C10为第2列……。
语法:
VLOOKUP(查值,区域,列序号,逻辑值)
“查值”:为需要在数组第一列中查的数值,它可以是数值、引用或文字符串。
“区域”:数组所在的区域,如“B2:E10”,也可以使用对区域或区域名称的引用,例如数据库或数据清单。
“列序号”:即希望区域(数组)中待返回的匹配值的列序号,为1时,返回第一列中的数值,为2时,返回第二列中的数值,以此类推;若列序号小于1,函数VLOOKUP 返回错误值 #VALUE!;如果大于区域的列数,函数VLOOKUP返回错误值 #REF!。
“逻辑值”:为TRUE或FALSE。它指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果不到精确匹配值,则返回小于“查值”的最大数值;如果“逻辑值”为FALSE,函数 VLOOKUP 将返回精确匹配值。如果不到,则返回错误值 #N/A。如果“查值”为文本时,“逻辑值”一般应为 FALSE 。另外:
·如果“查值”小于“区域”第一列中的最小数值,函数 VLOOKUP 返回错误值 #N/A。
·如果函数 VLOOKUP 不到“查值” 且“逻辑值”为 FALSE,函数 VLOOKUP 返回错误值 #N/A。
下面举例说明VLOOKUP函数的使用方法。
假设在Sheet1中存放小麦、水稻、玉米、花生等若干农产品的销售单价:
          A                B
1    农产品名称      单价
2        小麦          0.56
3        水稻          0.48
4        玉米          0.39
5        花生          0.51
…………………………………
100      大豆        0.45
Sheet2为销售清单,每次填写的清单内容不尽相同:要求在Sheet2中输入农产品名称、数量后,根据Sheet1的数据,自动生成单价和销售额。设下表为Sheet2:
        A                B        C          D   
1    农产品名称    数量    单价    金额   
2    水稻            1000    0.48      480   
3    玉米            2000    0.39      780   
    …………………………………………………   
在D2单元格里输入公式:
=C2*B2  ;
在C2单元格里输入公式:
=VLOOKUP(A2,Sheet1!A2:B100,2,FALSE) 。
如用语言来表述,就是:在Sheet1表A2:B100区域的第一列查Sheet2表单元格A2的值,查到后,返回这一行第2列的值。
这样,当Sheet2表A2单元格里输入的名称改变后,C2里的单价就会自动跟着变化。当然,如Sheet1中的单价值发生变化,Sheet2中相应的数值也会跟着变化。
其他单元格的公式,可采用填充的办法写入。
VLOOKUP函数使用注意事项
说到VLOOKUP函数,相信大家都会使用,而且都使用得很熟练了。不过,有几个细节问题,大家在使用时还是留心一下的好。
一.VLOOKUP的语法
VLOOKUP函数的完整语法是这样的:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
1.括号里有四个参数,是必需的。最后一个参数range_lookup是个逻辑值,我们常常输入一个0字,或者False;其实也可以输入一个1字,或者true。两者有什么区别呢?前者表示的是完整寻,不到就传回错误值#N/A;后者先是一模一样的,不到再去很接近的值,还不到也只好传回错误值#N/A。这对我们其实也没有什么实际意义,只是满足好奇而已,有兴趣的朋友可以去体验体验。
2.Lookup_value是一个很重要的参数,它可以是数值、文字字符串、或参照地址。我们常常用的是参照地址。用这个参数时,有两点要特别提醒:
A)参照地址的单元格格式类别与去搜寻的单元格格式的类别要一致,否则的话有时明明看到有资料,就是抓不过来。特别是参照地址的值是数字时,最为明显,若搜寻的单元格格式类别为文字,虽然看起来都是123,但是就是抓不出东西来的。
而且格式类别在未输入数据时就要先确定好,如果数据都输入进去了,发现格式不符,已为时已晚,若还想去抓,则需重新输入。
B)第二点提醒的,是使用时一个方便实用的小技巧,相信不少人早就知道了的。我们在使用参照地址时,有时需要将lookup_value的值固定在一个格子内,而又要使用下拉方式(或复制)将函数添加到新的单元格中去,这里就要用到“$”这个符号了,这是一个起固定作用的符号。比如说我始终想以D5格式来抓数据,则可以把D5弄成这样:$D$5,则不论你如何拉、复制,函数始终都会以D5的值来抓数据。
3.Table_array是搜寻的范围,col_index_num是范围内的栏数。Col_index_num 不能小于1,其实等于1也没有什么实际用的。如果出现一个这样的错误的值#REF!,则可能是col_index_num的值超过范围的总字段数。
二.VLOOKUP的错误值处理。
我们都知道,如果不到数据,函数总会传回一个这样的错误值#N/A,这错误值其实也很有用的。比方说,如果我们想这样来作处理:如果到的话,就传回相应的值,如果不到的话,我就自动设定它的值等于0,那函数就可以写成这样:
=if(iserror(vlookup(1,2,3,0))=true,0,vlookup(1,2,3,0))
这句话的意思是这样的:如果VLOOKUP函数返回的值是个错误值的话(不到数据),就等于0,否则,就等于VLOOKUP函数返回的值(即到的相应的值)。
这里面又用了两个函数。
第一个是iserror函数。它的语法是iserror(value),即判断括号内的值是否为错误值,如果是,就等于true,不是,就等于false。
第二个是if函数,这也是一个常用的函数的,后面有机会再跟大家详细讲解。它的语法是if(条件判断式,结果1,结果2)。如果条件判断式是对的,就执行结果1,否则就执行结果2。举个例子:=if(D2=””,”空的”,”有东西”),意思是如D2这个格子里是空的值,就显示文字“空的”,否则,就显示“有东西”。(看起来简单吧?其实编程序,也就是这样子判断来判断去的。)
三.含有VLOOKUP函数的工作表档案的处理。
一般来说,含有VLOOKUP函数的工作表,如果又是在别的档案里抓取数据的话,档案往往是比较大的。尤其是当你使用的档案本身就很大的时候,那每次开启和存盘都是很受伤的事情。
有没有办法把文件压缩一下,加快开启和存盘的速度呢。这里提供一个小小的经验。
在工作表里,点击工具──选项──计算,把上面的更新远程参照和储存外部连结的勾去掉,再保存档案,则会加速不少,不信你可以试试。
下面详细的说一下它的原理。
1.含有VLOOKUP函数的工作表,每次在保存档案时,会同时保存一份其外部连结的档案。这样即使在单独打开这个工作表时,VLOOKUP函数一样可以抓取到数值。
2.在工作表打开时,微软会提示你,是否要更新远程参照。意思是说,你要不要连接最新的外部档案,好让你的VLOOKUP函数抓到最新的值。如果你有足够的耐心,不妨试试。
3.了解到这点,我们应该知道,每次单独打开含有VLOOKUP函数的工作表时,里面抓取外部档案的数值,只是上次我们存盘时保存的值。若要连结最新的值,必须要把外部档案同时打开。
VLOOKUP函数我所了解的,也只是这些,大家有什么好的经验或有什么疑问,欢迎大家提出,一起探讨。
excel 用vlookup函数跨表调取数据
2009-03-13 14:12
目标:从全校中调取本班
  1、下面是总表,有一千个学生的资料,我这里只举几项资料,如姓名、性别、出生年月日、学号、民族。
  2、插入一个工作表,命名“一(1)班”,这个是自己班学生的名字,班主任当然很快打得出来。
  3、现在B2单元格里输入“=VLOOKUP($A2,总表!$A$2:$E$1000,2,0)”,回车就可以显示小明的性别了。
   注意:输入内容必须是英文状态下输入。
   解释:$A2 代表本工作表要查的单元格(意思是要到别的工作表查与这个单元格相同 
             的内容)
          总表! 代表要查的工作表(要在“总表”工作表里查)
          $A$2:$E$1000 在哪个范围查,即A2到E1000这个范围内
          2  代表要显示哪一列的数据,即查范围是A2到B7,那A列为第1列,我想显示B
             列的数据,B(性别)列为第2列。
  4、选中B2这一格,鼠标移到右下角出现黑十字时,单击左键不放往下拉,拉到最后一名学生再放开,所有的学生的性别就出现了。
  5、再回来B2,像上面一步一样往右拉。
一看效果怎么打横的全都是性别,别急,再看下一步。
  6、选中C2,看看函数栏,原来要显示的列数还没改,还是第2列,那“出生年月日”是第3列,就改为3,再回车。
效果出来了,看到出生年月了,然后用上面的方法往下拉,把全班的拉出来。
  7、如此类推,把其他列改过来之后,再往下拉,那么就可以显示所有的资料了。
  8、如果一(1)班的班主任做完了,那么其他班的班主任就不用这么麻烦了,只要把自己班的学生名单复制,然后覆盖一(1)班学生的姓名,其他资料就跟着变了,呵呵!
=VLOOKUP($A1,Sheet2!$A$1:$C$14864,3,0)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。