vlookup函数从菜鸟到高手,看这一篇文章就够了!

vlookup是Excel中一个非常重要的、并且使用频率极高的查找函数,官方的含义是:搜索表区域首列满足条件的元素,确定待检索单元格在区域中的行序号,再进一步返回选定单元格的值。

简单的说就是在包含查找值的某个区域的首列进行查找,查找到匹配的数据以后,然后返回该区域同一行上的单元格中的值

vlookup函数不仅可以进行单条件查找,还可以进行一对多查找、多条件查找、正向查找、反向查找,甚至利用它的模糊匹配功能,代替IF函数做条件判断,那么今天牛哥就来跟大家分享一下vlookup函数在多场景下的使用方法。

先来看下vlookup函数的语法:

vlookup(lookup_value,table_array,col_index_num,[range_lookup])

第1参数lookup_value:表示要在表格或区域的第一列中查询的值。

第2参数table_array:表示要查询的单元格区域,这个区域中的首列必须要包含查询值,否则公式将返回错误值。

第3参数col_index_num:用于指定返回查询区域中第几列的数值。

第4参数[range_lookup]:可选,决定函数的查找方式,如果是为FALSE或0,则是采用精确匹配方式;如果为TRUE或1,则使用近似匹配方式,同时要求查询区域的首列必须按照升序进行排序。

下面牛哥将通过几个具体的实例,来详细的介绍一下vlookup函数的使用方法。

单条件查找之:查找并返回单列记录

如下图所示,左侧单元格区域 A2:C12 中为学生的成绩表,学生姓名在该区域的第一列,

右侧单元格区域E2:F5为查询表,要求根据学生的姓名,使用 vlookup 函数查找出对应学生的数据成绩。

在F2单元格中输入公式:=vlookup(E2,$A$2:$C$12,3,0),然后向下拖动填充公式至F5单元格,所要查找的学生数学成绩就出来了。

Vlookup函数查找并返回单列记录公式解析:

第1参数:E2,为单元格引用,表示要查找的值,即姓名,因为要依次查找每一个姓名,所以公式需要向下拖动复制,引用的单元格也要相应变成E3,E4...所以不需要固定;

第2参数:$A$2:$C$12,表示包含查找值的单元格区域,该区域中第一列(A列)包含查找值,所以符合要求,

查找区域要固定不变,引用的单元格不能随着公式的向下填充而变动,所以使用了$对行号进行了固定;

第3参数:3,这个参数是用于返回哪1列上的值,而数学成绩位于A2:C12区域中的第3列,所以要返回第3列的值;

第4参数:0,因为是精确匹配,所以该参数为0或FALSE。

单条件查找之:查找并返回多列记录

如下图案例所示,这个案例是要求根据右侧学生的学号(G2单元格),在左侧单元格区域A2:E12中,查找出对应学生的姓名,语文、数学、英语三科的成绩。

在H2单元格中输入公式:=vlookup($G2,$A2:$E12,COLUMN(B1),FALSE),并向右拖动填充公式到K2单元格。

Vlookup函数查找并返回多列记录公式解析:

第1参数:$G2,为要查找的值,即通过学号,分别查找出姓名和各科成绩,所以公式会向右复制填充,但是查找的值为单元格引用,公式在向右填充时不能变动,否则就会出错,所以要使用$对列号固定。

第2参数:$A2:$E12,为查找区域,第一列包含查找值的(学号),同样公式要向右填充,也要保持查找区域固定不变;

第3参数:COLUMN(B1),返回对应列上的值,因为本案例的目的是要随着公式向右复制,从而依次返回姓名、语文、数学、英语三科的成绩,所以参数是要随着变动的,而姓名在第2列,语文在第3列,数学在第4列,英语在第5列,所以使用函数COLUMN(B1)返回列号2,当公式向右填充时,依次会变成COLUMN(C1)返回列号3,COLUMN(D1)返回列号4,COLUMN(E1)返回列号5,来达到返回对应列号值的目的。

第4参数:FALSE,精确匹配,上面讲过,0和FALSE在这里都代表精确匹配,所以这里也可以使用了FALSE表示。

单条件查找之:vlookup跨工作表查找

这个案例,查找值和查找区域分别放在了两个不同的工作表,要求根据查询表中的产品编号(查找值),在产品表(查找区域)中进行查找,并将对应的产品信息返回到查询表中。

产品表

查询表

在查询表中的B2单元格中输入公式:=vlookup($A2,产品表!$A:$F,COLUMN(B1),0)并向右、向下拖动填充到F7单元格。

vlookup跨工作表查找公式解析:

第1参数:$A2,查找值,公式要分别向右、向下填充,要保持向右填充查找列一直处在A列,所以列号固定不变,向下填充,查找的产品编号要跟着变化,所以行号无需固定;

第2参数:产品表!$A:$F,查找区域,因为是跨工作表查找,所以跨工作表引用的表示方法为:工作表名称!表格区域(如,产品表!$A:$F)。另外在输入公式的这一处时,可以直接通过点击鼠标切换到“产品表”工作表中,选择目标单元格区域,前面会自动加上工作表名称。同样这里的查找区域也要进行固定。

第3参数和第4参数和上面的案例相似,这里就不多做介绍了,大家不理解的可以去看下上面两个案例中第2,第3参数的解析。

多条件查找之:vlookup结合辅助列查找

如下图要求查找出A、B、C、D店对应月份的销量和营业额。

实际上这里的辅助列的用法就是用连接符&把多个条件,连接成一个条件,然后再使用vlookup函数进行查找,所以查找之前,要在查找区域所在的表建立一个辅助列,将门店和月份用连接符&连接起来,如:A2=B2&C2A1月)

然后在J2单元格中输入公式:=VLOOKUP($H2&$I2,$A$2:$E$17,COLUMN(D:D),FALSE),并向右、向下拖动填充公式至K5单元格。

vlookup结合辅助列查找公式解析:

第1参数:$H2&$I2,表示要查找的值,即用连接符&将两个条件连接成了一个条件,连接后的查找值会变成:"A店3月",因为公式要向右、向下填充,向右填充时要保持列号固定不变,所以使用相对引用固定列号,行号要随着向下填充变化,所以无需固定。

第2参数:$A$2:$E$17,表示查找区域,因为第一列要包含查找值,第一列是构建的辅助列,正好是包含查找值的,同样公式要向右、向下填充,要保持查找区域不能随着公式的移动而发生变化,所以也要使用绝对引用。

第3参数:COLUMN(D:D),这个参数是用于返回第几列上的值,本案例的目的是要随着公式向右复制,从而依次返回销量、销售额,参数是要随着变动的,而销量在查找区域的第4列,销售额在第5列,所以使用函数COLUMN(D:D)返回列号4,当公式向右填充时,会变成COLUMN(E:E)返回列号5,来达到返回对应列号值的目的。

第4参数:0,因为是精确匹配,所以该参数为0或FALSE。

多条件查找之:vlookup结合数组的用法

上面的那个案例是借助辅助列的方法来完成多条件查找,但是如果有新的数据添加进来,每次都要先更新一下辅助列,步骤有点繁琐,而接下来这个案例只要使用IF函数,结合数组同样也能够实现vlookup函数的多条件查找,而且步骤一点都不繁琐。

在I2单元格中输入公式:=VLOOKUP($G2&$H2,IF({1,0},$A$2:$A$17&$B$2:$B$17,C$2:C$17),2,FALSE),并向右、向下拖动填充公式至J5单元格。

vlookup结合数组应对多条件查找公式解析:

第1参数:$G2&$H2,表示查找值,同样和上一个案例一样也是用连接符&将两个条件连接成了一个条件,这里的第1参数和上一个案例的第一参数意思是一样,所以就不多做解释。主要区别在第2参数。

第2参数:IF({1,0},$A$2:$A$17&$B$2:$B$17,C$2:C$17),表示查找区域,使用了if函数对数据组内的{1,0}进行条件判断:

当为1时返回$A$2:$A$17&$B$2:$B$17,作为查找区域的第一列,因为这里也使用了连接符&,将门店和月份进行了连接,所以符合查找区域第一列包含查找值;

当为0时返回C$2:C$17,并且作为查找区域的第二列,在第3参数中需要返回该列的(销量)数据;

同样公式要向右、向下填充,查找区域的第一列要使用绝对引用进行固定,而查找区域的第二列,使用相对引用,向下填充要保持行号不变,列号要随着向右的拖动变成D$2:D$17,这样就可以在J2:J5区域返回营业额的数据了。

第3参数:2,返回区域中的第二列,虽然要返回的数据是两列,销量和营业额,但是当公式向右填充到J2单元格时,公式就变成了:=VLOOKUP($G2&$H2,IF({1,0},$A$2:$A$17&$B$2:$B$17,D$2:D$17),2,FALSE),这样D$2:D$17就变成了查找区域的第二列,所以返回该列的值了。

第4参数:同样精确匹配。

Vlookup结合数组进行反向查找

下图表格中要求,根据姓名,查找对应的学生编号,前面的案例都是向右查找,而这个案例是向左查找。

vlookup函数在查找时,要求查找区域的第1列必须要包含查找值,然后向右返回对应行的值,这个案例要返回的值在第1列,包含查找的值在第2列,所以我们可以使用if函数来构建一个数组,做一个位置调换,将左表的B列放在查找区域的第一列,A列放在在第二列,这样就可以使用vlookup进行查找了。

在H2单元格中输入公式:=vlookup(G2,IF({1,0},B$2:B$12,A$2:A$12),2,0) ,并向下拖动填充到H3单元格。

vlookup反向查找公式解析:

第1、3、4参数,和前面的几个案例意思是一样的,这里面就不具体介绍了,

对第2参数做一下解释:IF({1,0},B$2:B$12,A$2:A$12) ,使用If函数构建了一个数组,当条件满足时先返回姓名这一列,然后再返回学号这一列,数组结果为:{"张明明","NX-003";"黄海","NX-005";"夏红鑫","NX-011";.....}这样就可以进行正常的查找了。

如果前面的关于数组的案例的公式理解了,这里就容易理解了。

单条件查找之:一对多查找

这里的一对多查找的意思是,通过一个条件,查找并返回所有匹配该条件的记录值, vlookup函数在进行数据查找时,只匹配第一个符合条件的记录,后面即使有重复的记录也不会再匹配,所以就要结合辅助列、数组来完成一对多的查找。

如下图案例所示,要求找出陈强4月份的所有出勤日期。

在使用vlookup函数查找之前,要先在出勤日期这一列后面添加一个辅助列,并且使用Countif函数统计出姓名是第几次重复出现的。在C2单元格中输入公式:=COUNTIF($A$2:A2,A2),并向下拖动填充到C30单元格。

然后在E2单元格中输入公式:=VLOOKUP("陈强"&ROW(1:1),IF({1,0},$A$2:$A$30&$C$2:$C$30,B$2:B$30),2,FALSE),并向下拖动填充公式,直至出现错误值。

说下解题思路:

vlookup函数在查找数据时,遇到多条重复的记录,只会匹配第1条记录,后面重复的会被忽略,而想要把每一条重复的记录都找出来,就要让查找区域第一列的值都变成唯一值,

所以:需要增加一个辅助列(C列),先通过countif函数,统计姓名是第几次重复出现,并和姓名连接起来,这样查找区域首列重复的姓名,也变成了唯一值(比如陈强第1次出现时是”陈强1”、第2次出现时是”陈强2”…),

最后再使用if函数,来实现将连接后的包含查找值的区域放在首列,要返回的区域放在第二列,即第2参数:IF({1,0},$A$2:$A$30&$C$2:$C$30,B$2:B$30);

那么第1参数:"陈强"&ROW(1:1),将要查找的陈强和ROW(1:1)函数构成的数字相连接,查找值就会变成:"陈强1",当公式向下填充时就会相应的变成:"陈强2","陈强3",这样查找值就符合查找区域首列包含查找值的要求了。

最后第3、第4参数分别是返回对应行上第2列的值和精确匹配。

那结果中没有查到后返回的错误值,能不让显示出来呢?

只要在外层加上iferror函数就可以了,完整的公式:

=IFERROR(VLOOKUP("陈强"&ROW(4:4),IF({1,0},$A$2:$A$30&$C$2:$C$30,B$2:B$30),2,FALSE),"")

vlookup模糊匹配,代替IF做多条件判断

前面几个案例都是介绍的精确匹配的用法,另外还有一个近似匹配是如何应用呢?

使用vlookup函数进行近似匹配查找的前提是,要查找的区域的第一列必须是按照升序排序,否则vlookup无法返回正确的值。

所以这里就利用了vlookup函数模糊匹配的这个功能来进行条件判断,只要设置好条件的区间,并且按照升序排序,就可以代替if函数做条件判断。

下图这个案例是根据左表业绩的等级评定标准,对右表相应的人员业绩进行评定,如果使用if函数,需要嵌套好几层,这里使用vlookup函数简短的一段代码就可以搞定。

在G3单元格中输入公式:=vlookup(F3,A$3:B$7,2,1) ,向下拖动填充到G11单元格。

vlookup做多条件判断公式解析:

第1参数:F3,表示要查找的值,即:业绩;

第2参数:A$3:B$7,表示要查找的区域,因为本案例是近似匹配,所以查找的区域第一列必须要按照升序排序,条件区间分别为:0代表,0-59、60代表,60-69、70代表,70-79、80代表,80-89、90代表,90-99。

第3参数:2,返回等级所在的列号。

第4参数:1,模糊匹配,也可以使用TRUE表示,Vlookup模糊匹配的用法是:在对查找区域内进行查找时,如果没有找到相等的值,则会将小于查找值的最大值返回出来。所以查找F3单元格的业绩(49)时,查找到的是0,返回的等级是E。

关于vlookup函数的使用方法,今天的分享就到这里了,内容比较多,建议大家收藏,然后仔细的看完,如果这些方法都掌握了,相信能够解决Excel工作中的大部分查找难题。

如果文中有不明白的地方,欢迎大家给牛哥留言,另外如需要本案例的素材源文件,大家可以私信牛哥哦。

如果你觉得这篇文章让你掌握了vlookup函数的更多使用方法,就给我点赞吧。

关注我,学习更多Excel办公技能,后续会不断的输出更多高阶技能哦!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容