VLOOKUP函数是我们在职场当中非常好用的神器之一,它有多种的使用方法,也有很多的坑,我们花了3个小时,帮你梳理了VLOOKUP函数使用的所有方法,以及可能你使用过程可能会遇到的坑。如果你想学会VLOOKUP函数,看这一篇文章就足够了!这篇文章有点长,在这里我们就为各位准备了这篇文章的结构图。要想了解一个函数,我们就需要清楚知道,在什么样的情况下,我们可以使用VLOOKUP函数,也就是VLOOKUP函数使用的条件是什么?只要满足上面的三个条件,我们就可以使用VLOOKUP函数,缺一不可。上面这个案例当中,就有两张表,左边这张是员工信息表,右边这张是工资表。另外,右边这张工资表缺失的工资信息,能够在左边这张表当中找到。满足了上面这三个条件,我们就可以使用VLOOKUP函数。VLOOKUP(查找的值,查找区域,返回列号,查找模式)
在上面这个案例当中,我们通过函数公式:=VLOOKUP(F3,B3:D18,3,0)【B3:D18】:代表我们查找的数据区域范围,注意这里不包含标题。这里要注意,这个列号是我们选定区域的列号,不是Excel表的列号。我们选定的区域是编号-部门-工资,一共是有3列,我们查找的值【工资】在该区域的第三列,所以返回的列号为3。如果是按照表格的列号来看,工资所在的列是D列,D列是第四列,如果返回的列号录入为4,那么公式的结果就会出错。【0】:代表查找的模式,其中0代表精确查找,1代表模糊查找。精确查找:就是查找的数是一对一的关系,A查找的就是A,B查找的就是B,两个数是完全相同的。模糊查找:查找的是近似关系,A可以查找B,B可以查找C,不是一一对应的关系的。以上就是VLOOKUP函数各个参数的定义以及使用的方法。在下面这个列表当中,我们要如果要根据员工编号,查询员工的手机号码,那么则可以在J3单元格录入公式:=VLOOKUP(H3,$B$3:$E$18,4,0)2、在B3到E18区域查找,就是在左侧的表格内查找,这里同样不包括标题。3、查找的结果在第4列,也就是我们要查找的是手机号码。录入完以上公式,我们再往下进行录入,即可把所有的员工的手机号码查询出来。在下面的工作表中,我们要根据学生的编号,查询得到后续的学生档案信息,而且学生编号是乱序的,想一个个地去找不太可能。
在下面的工作表中,我们要根据学生的编号,查询得到后续的学生档案信息,而且学生编号是乱序的,想一个个地去找不太可能。
这个时候我们就可以使用VLOOKUP函数来实现批量查询。
我们在J24单元格录入函数公式:=VLOOKUP($I24,$B$24:$G$31,2,0)这个函数公式表示:查找I24单元格的值,在B24到G31区域中查找,返回结果在第二列,以精确模式来查找。随后我们往右边拖动公式的时候,记得修改下结果返回的列号就可以了。这样我们就完成了查找的值不在查找范围内的第一列信息的效果。
错误一:查找的值不在查找范围内的第一列
如下图所示,我们要查找雅客的工资是多少,通过VLOOKUP函数,我们得到了一个错误值。
其中的函数表达式为:=VLOOKUP(B7,E7:H8,2,0)
这里为什么会出错了呢,因为我们查找的姓名,不是在查找范围内的第一列。
我们查找的区域E7到H8,第一列是序号,而我们查找的是姓名,所以它就产生了错误。
我们把查找的区域调整一下,将公式中原本的E7:H8改成G7:H8,那么就可以解决这个错误问题。
错误二:查找的值或者范围没有进行锁定
查找的值或者范围,没有进行锁定,也是导致VLOOKUP函数查找出错的常见问题。
比如在下面这个表中,因为我们没有对查找的值进行锁定。所以后续字段在查找的时候,就以前面一个单元格的值来进行查找。
这个时候查找的值就已经不是我们预想的值了,所以VLOOKUP函数查找就会出错。
遇到这种需要横列或者纵列拖动公式的情况,你应该先检查一下查找的值有没有锁定。就是通过光标选中公式中的该单元格,然后按键盘上的F4键来进行切换,在这里我们只要锁定列就可以了,行不用锁定,所以我们就让美元符号出现在字母前面。锁定了列之后,我们再往右边拖拉公式,查找的值就不会再进行移动了。
错误三:返回的列号不正确引起的错误
返回的列号不正确,也会引起VLOOKUP函数在查询的时候出错。
比如还是上面的例子,我们录入完第一个公式的时候,往右边去拖拉公式,结果你会发现,后面得到的所有结果,都是一样的。
其实就是由于VLOOKUP函数的第三个参数,它不是引用的参数,而是一个固定的值,固定的值是不会随着我们拖拉公式,产生改变的。所以后面所有的结果,都是返回第二列,那么结果自然会出错。在查询的字段信息比较少的情况下,我们可以通过手动更改第三个参数的值,来让它返回正确的列号。但如果查找的字段过多,我们就可以借助其他函数,来实现引用的效果了,这个后续会再跟大家介绍。查找的值与区域的值格式不统一,这种错误,常常出现在一些学员的表格上。比如下图,明明公式是没有问题的,查找的值跟区域的值都一样,为什么会产生错误呢?问题就出在,B5单元格的格式是文本格式,要查询的区域E5:H6当中的E6单元格是数字格式这里。一个是文本格式,一个是数字格式,系统就会判断他们是两个不同的值,那么结果就自然会出错。修正的方法就是:把B5单元格的格式改为数字格式,那么就可以让结果显示正确了。如果单元格内有空格和换行的情况,就跟上面的问题一样,不容易察觉,但这也是导致VLOOKUP函数出错的原因。如下图所示,这两个公式看起来也是没啥问题,可结果却是错误的。问题的根源就出在B6单元格的值,多了一个换行符,导致该单元格与E7单元格的格式不同,结果就出错了。解决的方法就是:把B6单元格的换行符删除掉,如果换行、空格的情况比较多,可通过查找替换的功能,查找换行符或空格,替换为那里不填写,那么就可以实现批量地修改。如下图所示,下面这个表格,跟上面几个错误也是同样,公式是正确的,但查询的结果却出错了,那么多半是格式问题。细心的朋友,可以看到在B5单元格,数字2的左上角,又一个绿色的光标,这绿色的光标,就代表该单元格可能是文本格式。我们点击该单元格,你会发现在公式栏中,在数字2的前面还有一个英文的单引号,而该单引号在默认情况下,都是会隐藏的。解决的方式:利用查找替换功能,把单引号的字符都替换为空值,那么结果即可查询正确。VLOOKUP函数的最后一个参数是查找模式,在不填写的情况下,默认是按照模糊查找的方式来查找的。明明在数据源当中没有序号3,但是却能查找到对应的工资出来。究其根源,就是该同学在录入公式的时候,忘记VLOOKUP函数还有第四个参数。而第四个参数,正是决定VLOOKUP函数使用精确查找还是模糊查找的重要条件。如果你不录入第四个参数,系统就会默认按照模糊查找的模式来查找,那么最终看似也能把结果算出来,但很可能你得到的都是错误的答案。所以一定要记住,VLOOKUP函数是有四个参数的。在VLOOKUP函数当中,不支持反向的查找,因为它违反了我们上面提到的第一个错误。在这个公式当中,我们要根据员工的姓名,查找出他所在的部门。我们以往通过VLOOKUP函数来查找,都是按照从左往右的方向来查找,在这里则是要反其道而行,从右往左进行查询,那么结果自然就出错了。如果你硬是想要逆序查找,也不是不能,可以结合其他函数来实现,这个我们也是会在后面的内容当中,进行介绍。通过上面内容的学习,你已经初步掌握了VLOOKUP函数的使用方法了,接下来我们就来跟各位介绍一下VLOOKUP函数的进阶用法!我们都知道,VLOOKUP函数查找的模式,在大众心目中都是一对一查找的,A查找的就是A,B查找的就是B。但其实Vlookup函数可以实现这样的精确查找之外,它还可以实现模糊查找的功能。要查找的值和查找区域的值未必都是要一一对应关系的。在上面这个案例当中,我们要根据销售人员的销售额,自动匹配他们能够得到的提成比率。而每个档位能够拿到的提成比率区间,则是在左边的这个表当中。对于这样的查找,我们如果按照过往的方式来统计,很有可能就会用到IF函数来进行判断。但其实在这个案例当中,我们用VLOOKUP函数会快10倍!=VLOOKUP(G7,$C$7:$D$13,2,1)这个函数公式表示的就是模糊查找,它会自动根据你的最低值,给你匹配相应的提成比率,这个就是区间查找的用法。与这个案例类似的,你可以学生的成绩,自动给他们匹配考试的评级等。有时候,数据量太大,我们可能已经不记得某些产品它的全称是什么了?在不记得产品名称全称的时候,我们如何进行数据的查找和引用呢?比如:一个人,这三个字,我们就可以用一个【*】来表示。在这个案例当中,我们要通过我们记得的部分字段,比如【ABC】来查找出产品名称中包含【ABC】的内容,我们应该如何设置呢?=VLOOKUP('*'&F8&'*',$B$8:$C$14,2,0)这个公式表示,查找包含F8单元格字符串内容的价格。其中:'*'&F8&'*' 表示的就是分别在F8单元格的内容前后,加上一个任意字符串的通配符,来表示在F8内容的前后还有其他信息。在查找的过程当中,我们可能不仅有一个条件,可能有两个或者两个以上条件,要满足这两个条件,才去匹配我们想要值,那么VLOOKUP函数能不能实现多条件查找呢?正常情况下是不可以的,但我们可以VLOOKUP函数升级,给它添加一个武器。比如在上面这个案例当中,我们要根据产品的日期和单号,来去查找该产品的入库数量和入库型号。多条件查找的解决方法跟单条件查找的模式基本一致,只是这中间我们要做一个转换,我们需要把多条件变成单一条件。比如,原本可能是A、B这两个条件,我们通过连接符,连接AB,那么【AB】就变成的一个值。同样,要查找的数据区域,也是可以通过连接符来进行连接,这样我们就实现了多条件与单条件的转换。=VLOOKUP(G7&H7,IF({1,0},$B$7:$B$16&$C$7:$C$16,$D$7:$D$16),2,0)=VLOOKUP(G7&H7,$B$7:$B$16&$C$7:$C$16,2,0)其中上面这段,表示的就是我们前面所讲的,将多条件通过连接符合并,变成单条件,但这时候,你会发现,该公式缺少结果所在的行列。1和0在Excel当中,也可以用来表示是与否的关系,也就是做出一个判断。如果是1,表示结果成立返回的值,如果是0,表示结果不成立返回的值。通过这个条件的判断,我们把Vlookup函数的查找区域以及结果区域分别放置在成立返回的值以及不成立返回的值,那么就能够把该公式补充完整。=VLOOKUP(G7&H7,$B$7:$B$16&$C$7:$C$16,2,0)。单一个VLOOKUP函数其实已经蛮强大了,但我们还可以结合其他函数,来给VLOOKUP函数赋能,实现他原本实现不了的功能。MATCH函数的作用在于,查找某个字段在它所在字段当中的序号。表达式为:MATCH(查找的值,查找的区域,查找模式)比如在下面这个案例当中,我们查找【班级】字段在所在字段列表当中的第几列,我们就可以使用函数:得到的结果就是3,表示班级在所有字段当中的第三列。这个功能有什么用呢,它就可以解决VLOOKUP函数第三个参数不能引用的问题。在前面这个案例当中,正是VLOOKUP函数第三个参数不能引用,所以才导致结果错误。我们可以借助MATCH函数,先计算出每个字段位于字段列表当中的第几个,再嵌套到VLOOKUP函数里面,这样我们就不用手动更改第三个参数了。最终公式为:=VLOOKUP($I24,$B$24:$G$31,MATCH(J$23,$I$23:$N$23,0),0)其中:MATCH(J$23,$I$23:$N$23,0)部分,则是计算每个字段位于字段列表当中的第几个。如果你觉得上面一个组合函数太难了,那么这个简单的函数一定要学会。COLUMN函数的作用是计算某个单元格所在的列号。它返回的结果是单元格所在的列号,跟行号没有关系,A列就是1,B列就是2,C列就是3,以此类推。这个函数同样可以解决VLOOKUP函数第三个参数不能引用的问题。在之前的案例中,我们只需将第三个返回的列号,改成嵌套的COLUNM函数即可。最终公式为:=VLOOKUP($I24,$B$24:$G$31,COLUMN(B2),0)其中COLUMN(B2)函数的作用就是返回该列所在的序号。下面是我们的财务报表,现在如果我们要根据上期余额,查找出对应的科目,通过Vlookup函数来计算,系统就是提示错误。因为它违背了Vlookup函数的使用条件:查找的值,必须在查找范围的第一列。但我们可以看到,查找的值,上期余额是在查找范围内的最后一列,所以如果我们硬要用VLookup函数去查找,就会提示错误。既然不能逆序查找,我们就可以想办法,将这两列的数值位置进行调换。怎么转换呢?前面我们就提到了一种方法,就是通过CHOOSE函数与VLOOKUP函数结合,利用Choose函数可以选择返回的区域的效果来调换位置。另外一种方法,就是我们今天要提到的,通过IF函数来实现转换。在企图用IF函数来实现位置调换的时候,我们需要理解IF函数使用的原理,哪怕我们以为对IF已经非常熟悉了。IF函数的表达式为:IF(判断条件、条件成立返回值,条件不成立返回值)比如下面这个案例:根据国家规定,2020年男性退休年龄为60岁,女性退休年龄为50岁。我们在公式栏当中录入函数公式:=IF(B15='男',60,50)这个公式表示:判断B15单元格的值是否是男,如果是男,那么就显示为True,如果是True,那么就返回条件成立返回的值60.如果是FALSE,那么就返回条件不成立返回的值50.所以B16单元格的公式第一步运算后的结果就是:=IF(TRUE,60,50)C16单元格第一步运算后的结果就是:=IF(FALSE,60,50)在Excel当中,还有一个潜规则,Ture可以用1表示,False可以用0表示。但是,IF函数不仅可以返回1个单元格的值,也可以返回多个单元格的值。所以在这其中,我们不难发现,1和0的两个数字的位置,能够影响结果返回的值。利用这个规律,我们就可以解决Vlookup函数不支持逆序查找的问题了。我们在G3单元格录入函数公式:=VLOOKUP(F3,IF({1,0},D3:D9,C3:C9),2,0)录入完公式后,记得按Ctrl SHIFT ENTER三个按键进行确认,因为这是数组函数。=VLOOKUP(F3,{999,'现金';123,'银行存款';445,'建设银行';245,'保证金账户';633,'应收账款';234,'其他应收款';562,'固定资产'},2,0)其中中间的'现金';123,'银行存款';445,'建设银行';245,'保证金账户';633,'应收账款';234,'其他应收款';562,'固定资产“你可以把它理解为,就是两列数据,一列是科目,一列是上期余额,科目排在前面,上期余额排在后面。而函数公式当中的:IF({1,0},D3:D9,C3:C9)这一部分则表示,将D3到D9和C3到C9两列的位置进行调换。D3和D9原本是排在后面的,现在显示到前面,C3和C9原本是在表格前面的,现在显示到后面。通过这两列数据进行位置的调换,那么剩下的就可以按照Vlookup函数的方式,进行数据的查找了。看了这么多VLOOKUP函数的用法,我们来总结一下使用VLOOKUP函数的优势。VLOOKUP函数最吸引职场人的一点就是可以可以批量地查询以及合并数据,无论你是几百条还是几千条数据,无论你的字段排序有多乱,它都可以批量帮你找出来。VLOOKUP函数的的第二大优势就是数据数据更新的时候会产生联动效应,用牵一发而动全身来形容它也不为过。所以VLOOKUP函数也多用在财务系统的构建,通过VLOOKUP函数把多张报表串联起来,形成一张超级大的信息网络。通过前面的案例大家也可以看到,VLOOKUP函数查询的方向一般来说只能自左往右,自上而下。如果想要进行多条件查询,VLOOKUP函数本身也是不支持的,同样也是需要借助外力,这对于小白来说,比较困难。返回的列号不能引用,也是VLOOKUP函数的一大弊端,常常需要手动更改或者借助其他函数来实现, 不能一步到位。虽然VLOOKUP函数在此之前一直受到职场人的宠爱,但VLOOKUP函数的未来可能会逐渐淡出我们的视线。因为Excel当中有更加强大的PV和PQ功能,不用录入公式,就能实现VLOOKUP函数的功能。在未来,还有XLOOKUP函数,作为VLOOKUP函数的增强版,解决了VLOOKUP函数过往所解决不了的问题,使用起来更加方便。但对于初级的小白来说,VLOOKUP函数还是我们学习Excel必备的函数之一,它能够帮助我们提升工作效率,实现多表联动,也是我们办公的好帮手!