excel 用vlookup函数往下拉出现同样的数字下拉表格要的项,怎么样只让红色数字变动,其他数字不变换?

Vlookup函数是电子表格中的一个查找匹配函数,适用于Excel与WPS各个版本。在所有的函数中,vlookup函数应该是使用频率最高的函数之一,对新手小伙伴来说,掌握它是十分有必要的。本篇文章从其基本用法、进阶用法、匹配不出来原因分析、如何规避错误值、冷门用法科普等五个维度来详细介绍下vlookup函数,希望能够帮助小伙伴们快速入门、以及加深对此函数的认识。一、基本用法语法解释vlookup函数一共有4个参数,参数1要搜索的值、参数2搜索区域、参数3返回的列数、参数4匹配模式,参数有点多,没关系,我们用一个实例来看下每个参数的具体作用。精准匹配下图中,根据左边的信息表,利用vlookup函数匹配出李白的年龄,G2单元格中的公式该如何输入?参数1:搜索值,找谁?虽然最终结果是获取年龄字段,但是查找值并不是年龄,而是查找“李白的年龄”,主语是“李白”,所以参数1、查找值是“李白”,也就是F2单元格。参数2:搜索区域,去哪找?重点来了:查找区域的第一列必须是搜索值所对应的列(查找对象必须位于查询区域的最左列),参数1搜索值是“李白”,对应到左边到表格就是“姓名”字段,所以参数2搜索区域必须以B列作为首列,以B列作为首列向后拖动到我们需要匹配的值所在列,也就是D列年龄列(也可以继续向后拖动,只要包括年龄列就可以),所以参数为就是B:D列。参数3:在第几列?这里有个误区,很多小伙伴觉得左边的匹配表一共4列(A-D列),年龄列在D列,也就是第4列,所以参数3输入了“4”,这是错误的。参数3实际指的是返回值(年龄)在搜索区域中所处的列数,也就是在参数2框选区域中所处的列数,上面我们框选了B:D列,实际上仅框选了3列,B是第一列、C是第二列、D是第三列....所以返回值“年龄”在第三列,参数3输入数字“3”。参数4:匹配模式?匹配模式分为精准匹配(输入0、FALSE或者省略都可以)、近似匹配(输入1或者TRUE),最常用的当属精准匹配,也就是要完完全全找到“李白”这个人,而不是“李小白”、“李白小”,所以参数4输入数字“0”,表示精准匹配,也可以直接省略或者输入FALSE。日常工作中,99%的情况下都是使用vlookup函数的精准匹配,也就是参数4大家可以默认输入0。通过以上例子,介绍了vlookup函数的最基本、最实用的用法,最容易出错的两点在于:1、参数2/搜索区域 的首列必须是返回值所在的列;2、参数3/列数 必须是返回值在搜索区域对应的列数。近似匹配上面说到99%的情况下,vlookup函数的参数4都是0,也就是精准匹配,那么还剩下1%的情况,需要用到vlookup函数的近似匹配,在表格中也有非常合适的应用场景,那就是数据分组功能。下图中如何根据左侧A-B列的评级表,去匹配每位同学所属的评级?首先建立一列辅助列,在G2单元格内输入公式:=VLOOKUP( F2,B:C,2,1),向下填充,完成区间匹配。这里利用vlookup函数近似匹配的功能,它会返回小于等于查找值的最大值。查找数字56,等于查找 “小于等于56的最大值”,60/80/90都要大于56,只有0小于56,所以返回0对应的评级“不及格”; 查找数字88,等于查找 “小于等于88的最大值”,0/60/80都要小于88,但80最大,所以返回80对应的评级“良好”;最重要的一点,利用vlookup函数近似匹配之前,需要对匹配表数据进行升序处理,即上图中先对辅助列B列升序(上图中B列数字由小到大排序)。因为vlookup函数近似匹配采用的是二分法,一般是从中间开始向上下两端查找,不断二分,默认数据升序处理。不升序会怎么样?下图中,匹配序列处于乱序状态,利用vlookup函数近似匹配、返回小于等于查找值的最大值,正确结果应该是a1,(6是小于等于6.5的最大值),但是函数返回结果却是a2。二分法中间开始查找,序列中间值为7,7要大于查找值6.5,所以继续向上查找,上面的1要小于6.5,查找停止,返回1对应值。所以,在近似匹配的时候,切记要升序处理。二、进阶用法进阶用法主要是vlookup函数搭配辅助列或者其它函数,来实现数据匹配,常用的方法主要分为以下几种。在此之前,还有一个比较重要的概念就是单元格引用,在vlookup函数匹配的时候,参数1与参数2经常涉及到相对引用与绝对引用,十分重要。多列查找1、结合column函数下图中,匹配各同学的性别、年龄、城市三个字段,直接利用COLUMN函数(返回单元的列),动态返回需求列。公式=VLOOKUP($F2,$A:$D,COLUMN(B2),0),其中参数1与参数2皆涉及到单元格的引用。2、结合match函数上图需要匹配的列与原表列的位置顺序一样,可以用COLUMN函数解决,如果顺序不一致的话,需要结合match函数使用,公式=VLOOKUP($F2,$A:$D,MATCH(G$1,$A$1:$D$1,0),0) 注意其中的引用方式。match函数返回查找值在数组中的位置,比如查找字段“性别”,它在数组“A1:D1”中处于第2位,所以vlookup函数参数三就等于2。以上两种方式都是通过动态变更参数三,从而完成多字段匹配。逆向查找由于vlookup函数的参数2、查找区域首列必须为搜索值对应的列,如果返回值所在的列在搜索值对应的列前方的话,vlookup正常用法无法完成匹配。下图中,根据A-B列的数据源,匹配出E列的学号,根据前文,搜索区域只能从B列开始、向后拖动,但是返回值在A列,肯定查不到正确的结果。这种情况我的建议是调整列的位置,比如在学号列前方复制插入姓名列,逆向转正向匹配。当然也可以使用INDEX+MATCH组合以及XLOOKUP函数解决逆向匹配的问题,这里不是我们的讨论范围,感兴趣的小伙伴可以自行了解。多条件匹配多个字段匹配的情况,可以在源数据的基础上,增加一列辅助列,利用“&”将各列数据进行连接。模糊查找“*”是通配符,代表0到多个字符,"*"&D2&"*"则表示包含D2关键字的任意字符串一对多查找下图中,根据B-C列数据源,匹配出E列部门的所有员工姓名。由于vlookup函数只能返回首个值,然后有多个员工,这里利用COUNTIF函数将每个部门的个数进行编号。辅助列公式=B2&COUNTIF($B$1:B2,B2),注意其中的绝对引用。这样每个部门都会被标上序号。接着F2输入公式=VLOOKUP($E$2&ROW(A1),A:C,3,0),公式下拉,即可返回多个结果。三、匹配不出来的原因明明有数据,vlookup却匹配不出来,在工作中是比较常见的。第一种常见错误是匹配区域未绝对引用、发生变化所致。下图中匹配年龄字段。在E2单元格内输入公式=VLOOKUP(D2,A2:B9,2,0),由于参数2未采用绝对引用,公式在下拉到“赵云”的时候,引用区域变成了“A4:B11”,区域内并无此人,当然查找不到数据。正确的做法是:参数2引用区域采用绝对引用(选中引用区域,按下F4键)第二种常见错误是匹配字段中存在不可见字符,比如空白符,利用Ctrl+H将空白替换掉就可以了。其它错误可以参考下面这篇文章。四、规避错误值vlookup函数在未匹配到数据的情况下,函数会返回#N/A,如果想到规避这种错误值,可以利用IFNA或者IFERROR函数。公式=IFNA(VLOOKUP(D2,A:B,2,0),"查无此人"),在vlookup函数外层嵌套一个IFNA函数,表示内层的函数表达式(参数1)结果为#N/A,则返回指定的值(参数2),否则返回表达式本身的结果。IFERROR函数与IFNA用法一致,只不过前者比后者更加强大,关于Excel的错误类型总结,可以参考下面的文章。五、冷门用法(仅作了解)这里的冷门用法是指公式写起来比较麻烦、或者有更高效的函数可以替代,让我们一起看看吧~IF函数{1,0}用法,每位使用vlookup的童鞋不得不面对的问题。比如vlookup函数逆向查找,公式=VLOOKUP(D2,IF({1,0},B:B,A:A),2,0)这里完全可以用match+index函数替代(高版本可用Xlookup)。比如多条件匹配,公式=VLOOKUP( E2&F2,IF({1,0},A:A&B:B,C:C),2,0),需要Ctrl+shift+Enter三键齐按完成公式的输入。这里也可以用sumif或者sumproduct函数替代。vlookup函数搭配IF函数的{1,0}功能是不推荐大家使用的,如果想要了解IF{1,0}的具体原理,可以看下面这篇文章。最后再给大家分享一个vlookup的小技巧,提取固定数字字符串的技巧。下图中,提取A列是首次出现的手机号码,输入以下公式:=VLOOKUP(0,MID(A2&"a",ROW($1:$99),11)*{0,1},2,0),Ctrl+shift+Enter三键。新手小伙伴如果需要练习文件的话,可以在我的公众号后台回复【vlookup】,即可获取。推荐阅读:
第一次让我感觉到 Excel神奇之处,就是使用 VLOOKUP 函数。记得曾去一家公司面试时,面试官问我,你会Excel函数吗?我说很熟悉。现在想起来,这个回答好像有点冒险了,因为那时的我只会这个函数。VLOOKUP 函数是 Excel 中的一个纵向查找函数。按列查找匹配对应的条件并返回匹配模式下的对应值。它的表达形式比较简单,初学者使用几次以后,就能完全理解它的匹配原理了。下面分享工作中常用的几个 Vlookup 函数用法(后面会根据大家的反馈更新)。正向查找文本公式:=VLOOKUP(查找值,查找区域,返回值的列号,近似匹配 (TRUE) 或精确匹配 (FALSE))逆向查找文本公式:=VLOOKUP(查找值,IF({1,0},查找区域,返回区域),返回值的列号,近似匹配 (TRUE) 或精确匹配 (FALSE))单行多列文本公式:=VLOOKUP(查找值,查找值区域,COLUMN(返回值列号),近似匹配 (TRUE) 或精确匹配 (FALSE))交叉查询文本公式:=VLOOKUP(查找值1,查找区域,MATCH(查找值2,查找值2区域(标题行),0),近似匹配 (TRUE) 或精确匹配 (FALSE))多条件查找文本公式:=VLOOKUP(查找值1&查找值2,IF({1,0},查找值1区域&查找值2区域,返回值区域),返回值列号,近似匹配 (TRUE) 或精确匹配 (FALSE))通配符查找文本公式:=VLOOKUP("*"&查找值&"*",查找值区域,返回值列号,近似匹配 (TRUE) 或精确匹配 (FALSE))区间值查找文本公式:=VLOOKUP(查找值,查找值区域,返回值列号,近似匹配 (TRUE) 或精确匹配 (FALSE))若以上内容,对你略有帮助,请点赞收藏。后面根据大家的反馈会持续更新,谢谢!
全文 5000+字,前方高能,干货预警!花了一个周末的时间,整理了 VLOOKUP 函数最全的 16 种用法,借着这个话题分享给大家,希望对大家有帮助呀,收藏的同时不要忘记点赞呀~16 个技巧划分成了 3 个部分:初级篇、中级篇和高级篇,并且每个用法都有案例+详细解释,整体大纲如下:持续更新中,还有漏的技巧,大家可以评论区 @指北针 ,我会更新上来~当然只看图片不练习怎么也学不会 VLOOKUP 的,关于这 16 种用法,我也整理了一份练习文件,分享给大家,希望对大家有帮助呀,→这里:VLOOKUP的这16种用法,强到没朋友!(练习下载) 另外不少小伙伴私信咨询有没有零基础学习 Excel 函数的书籍推荐,对于零基础的小伙伴,可以看下这 3 册书,刚好京东暑假读书优惠(适合零基础):另外我也分享了近 500+ 篇 Excel/Word/PPT 类的技巧,也是超级有用的学习资料:01. VLOOKUP基础语法要了解一个 Excel 函数,第一个学习的肯定是函数的语法结构,VLOOKUP 共有 4 个参数,参数语法如下:= VLOOKUP(查找的值, 查找区域, 返回值所在列数, [匹配模式])这 4 个参数的解释如下:查找的值:要查找的词或单元格引用;查找区域:包含查找字段和返回字段的单元格区域,查找字段必须在查找区域的第 1 列;返回值所在列数:返回值在查找区域中的列数;匹配模式:0 为精确匹配,1 为模糊匹配;以上就是 VLOOKUP 函数的基础语法,作为 Excel 中使用频率最高、资质最老的一批函数,兼容性也非常强,基本上市面的 Excel 和 WPS 版本都能完美兼容。02. VLOOKUP 单条件查询首先是 Excel 中最常用,也最基础的用法「单条件查询」,只需要根据语法规则将对应单元格区域录入到公式中即可。案例:“根据工号将对应工资进行查询匹配”,操作也很简单,输入公式:=VLOOKUP(H2,A2:F11,6,0)现在就可以轻松将工号为 6 的员工工资匹配出来了,如下:简单解释下这个公式的含义:H2:要查找的单元格引用;A2:F11:查找区域单元格区域;6:工资字段位于查找区域的第 6 列;0:代表精准匹配;所以并不是所有的 VLOOKUP 函数都是返回第 2 列的,还要根据实际的工作场景来返回。03. 屏蔽检索不到错误VLOOKUP 在找不到数据的情况下会返回 #N/A 错误,如果想将错误屏蔽掉,或者输出其他提示信息,用 IFERROR+VLOOKUP 组合即可实现。案例:“匹配不到数据的时候返回 / 提示”,使用公式:=IFERROR(VLOOKUP(H2,A2:F11,6,0),"/")如下,查找区域并没有工号 11 的员工,所以返回了“/”:另外 VLOOKUP 对数据的匹配是极为严格的,哪怕差了一个空格、一个不可见字符,都会认为是不一样的,例如:“芒种学院”和“芒种学院 ”并不相等,因为差了一个空格。04. 反向匹配技巧讲解语法的时候提到过“查找词必须在查找区域的第 1 列”,但是在实际工作中,数据往往并不能完美符合需求,这个时候可以利用 IF 数组公式来调换列。案例:“根据姓名查找对应的工号”,使用如下公式:=VLOOKUP(H2,IF({1,0},B2:B11,A2:A11),2,0)这里用到了「IF数组公式」,将 B 列和 A 列的位置进行互互换,然后重新组成一个新的区域,这样 B 列就跑到 A 列前面了,如下:另外这个公式是“数组公式”,如果使用的版本并非 365,还需要按三键 Ctrl+Shift+Enter 结束,并不能直接 Enter 结束,大概率结果会出错。05. 模糊关键词检索除了检索确定的关键词,VLOOKUP 也可以配合通配符实现「模糊关键词匹配」,在 Excel 中共有 2 个通配符:星号*:代表任意个字符,可以是 0、1、N 个;问号?:代表任意 0 个或者 1 个字符;案例:“匹配出包含阳字姓名的员工工资”,可以使用如下公式:=VLOOKUP("*"&H2&"*",B2:F11,5,0)这样即可匹配出数据中包含“阳”字的相关数据,如下:06. 代替 IF 数值区间匹配针对查找词为“数字”的场景,VLOOKUP 还可以实现区间匹配,完美代替 IF 嵌套地狱。案例:“根据不同的销售业绩层级计算提成”,使用如下公式:=VLOOKUP(D2,A2:B6,2,1)不过使用这个公式是有条件限制的,必须符合这 2 个条件方可使用:查找词必须为数字;查找区域的数字必须从小到大进行排序;公式实现效果如下所示,轻松将提成计算出来:07. 去除空格/不可见字符匹配如果碰上不规范的数据,明明肉眼看上去一模一样,但是怎么都匹配不出来,大概率是碰到了数据中存在空格、数据中存在不可见字符。这个时候可以使用 SUBSTITUTE 或者 CLEAN 函数进行处理后匹配,例如:=VLOOKUP(SUBSTITUTE(H2," ",""),B2:F11,2,0)这个公式的技巧在于使用 SUBSTITUTE 将空格替换成空,然后再进行匹配,确保数据的一致性。另外如果碰到的是不可见字符,则可以使用 CLEAN 函数清除。再分享多一个判断是否存在“空格”或者“不可见字符”的技巧,可以使用 LEN 函数判断数据的长度,如果长度不一致,则表明存在。08. 横向匹配返回多列前面分享的 7 个技巧都是返回单个结果的,如果返回的数据是 N 列呢?难道还要写 N 个公式,如果数据是连续的,可以利用 COLUMN+VLOOKUP 配合实现返回多列。案例:“根据工号返回姓名/部门/性别/年龄/工资”等字段信息,使用如下公式:=VLOOKUP($H$2,$A$2:$F$11,COLUMN(B1),0)分别向右向下拖动完成填充即可,这里主要用到了 COLUMN 函数动态生成 2/3/4/.../N ,避免将返回列数固定写死,从而达到返回多列的效果。如果数据并非连续的呢?这个时候就可以考虑使用 MATCH 函数来定位数据所在的列数了。09. 匹配多表查询如果匹配的表有多张,并且可以通过条件来判断数据是位于哪张表中,那么可以使用 VLOOKUP+IF 公式来实现需求。案例:“不同的城市位于不同的表中,查找广州工号 8 员工的工资”,利用如下公式:=VLOOKUP(B2,IF(A2="深圳",A6:F15,H6:M15),6,0)这里用到了 IF 函数判断 A2 单元格的数值是否为深圳,是则返回 A6:F15,否则返回返回 H6:M15,实现了动态变更查找区域。当然这个技巧只适用于表的数量较少的情况下,如果表数量比较多,使用 IF 会让公式看起来很长,而且还容易出错,后面会有另外的技巧来实现。10. 多条件匹配查找前面分享了 9 个技巧,不过都是单条件查找,多个字段才能确定唯一一条数据的情况下,利用 VLOOKUP 也可以轻松实现,同样用到了 IF 数组公式。案例:“根据姓名+部门查找员工对应工资”,利用如下公式:=VLOOKUP(H2&I2,IF({1,0},B2:B11&C2:C11,F2:F11),2,0)这里用到了 2 个技巧:将 H2&I2 拼接起来组成一个新字段,并且该字段是唯一的;IF 数组公式将 B 和 C 列也拼接到一起,然后和 F 列组成成新的查找区域;这样就可以巧妙地将「多条件」转换成「单条件」,实现效果如下:11. 查找区域存在合并单元格如果查找区域中存在合并单元格,直接使用 VLOOKUP 匹配非常容易出错,因为合并单元格只有最左上角的单元格存在数据,其他单元格并不存在。这个时候就可以考虑使用 VLOOKUP+OFFSET+MATCH 来实现。案例:“根据部门+姓名查找出员工对应的工资”,使用如下公式:=VLOOKUP(F2,OFFSET($B$1,MATCH(E2,A:A,)-1,):C99,2,0)MATCH 函数用于定位部门所在的行号,然后使用 OFFSET 函数向下偏移获得“动态查找区域”,这样就可以轻松实现我们的需求了:当然这个案例会复杂很多,在实际工作中也尽量不要使用合并单元格来实现数据分组,无论是函数、透视表、图表、排序、筛选等绝大部分功能对合并单元格都不太友好。12. 查找词中存在合并单元格如果在查找词中也存在合并单元格,可以嵌套使用两个 VLOOKUP 函数完成需求。案例:“根据部门返回月度奖金”,使用如下公式:=VLOOKUP(VLOOKUP("座",$D$2:D2,1),$A$2:$B$4,2,0)嵌套的 VLOOKUP 函数主要是用于找到 D 列截止至本行的最后一个非空值,这样就可以将查找词一一匹配上,如下所示:13. 查找返回多个结果关键词和返回结果是 1:N 的关系,也可以使用 VLOOKUP 将所有结果全部返回,用到了 VLOOKUP+ROW+IF+INDIRECT 数组公式配合。案例:“找出市场部所有员工的姓名”,使用如下公式:=VLOOKUP($H$2&ROW(A1),IF({1,0},$C$2:$C$11&COUNTIF(INDIRECT("c2:c"&ROW($2:$11)),$H$2),$B$2:$B$11),2,0)公式非常复杂,整体可以分为 4 个思路:用 ROW 函数生成序列;INDIRECT+ROW 生成行数递增的查找区域;COUNTIF 计算部门的个数,生成新编号;IF 数组公式将构建的数据组成一个新的查找区域;同样是数组公式,按 Ctrl+Shift+Enter 结束后向下拖动填充,得到如下结果:这个公式的兼容性虽然很好,不过维护起来实在费劲,如果是 365 版本,可以直接使用 FILTER 函数即可实现需求,而且非常便捷。14. 查找结果返回同一单元格上面的技巧是将查找结果填充到不同的单元格中,如果想将结果合并到一个单元格内呢?纯粹利用 VLOOKUP 实现不了,但是可以配合辅助列,共有 2 个公式:G2 = C2&","&IFERROR(VLOOKUP(B2,B3:$G$12,6,),"")
I2 = VLOOKUP(H2,$B$2:$G$11,6,)其中 G2 单元格的公式用到了“调用自身列”的技巧,将找到的数据依次拼接,最后使用二分法进行匹配,实现效果如下:当然难度也非常大,如果版本比较新,可以考虑使用 TEXTJOIN+IF/FILTER 函数来实现,会非常简单,而且更流畅一些。15. 返回最后一个结果如果返回的结果有多个,只想要最后一个,利用 VLOOKUP+IF 数组公式也可以实现。案例:“找到市场部的最后一位职员”,使用如下公式:=VLOOKUP(1,IF({1,0},0/(C2:C11=H2),B2:B11),2)具体思路为当忽略 VLOOKUP 的最后一个参数时,函数会使用二分法进行查找,同时用 0/条件 可以将不符合条件的数值变成错误值,符合的变成 0。最后用 1 查找最后一个 0 即可实现需求,是不是非常巧妙,实现效果如下:16. 跨多Sheet表匹配数据被分布在 N 张 Sheet 表中,而且并不确定查找词位于其中的哪张表,这个时候可以利用 INDIRECT+VLOOKUP 实现跨多 Sheet 表匹配。案例:“存在深圳/广州/上海共计 3 张表,匹配出不同员工的工资”,使用如下公式:=VLOOKUP(A2,INDIRECT(LOOKUP(1,0/COUNTIF(INDIRECT({"深圳";"广州";"上海"}&"!b:b"),A2),{"深圳";"广州";"上海"})&"!b:f"),5,0)公式非常长,不过逻辑非常简单,利用 INDIRECT 函数将所有表的数据全部导入进行匹配,找到非错误的值即可,如下。当然针对这类表格,已经不建议使用 VLOOKUP 进行匹配了,不仅卡不说,还非常容易出错,不过公式还是非常值得研究的。可以的话,利用 PQ 将数据合并起来然后进行匹配,效果会更高。好了,暂时先分享 16 个,后续还有用到其他的 VLOOKUP 技巧,我也会更新上来,希望对大家有帮助呀,收藏的同时不要忘记点赞哦~我的其他高赞回答,也可以看下哦,都是一些非常有用的资料:VLOOKUP 到底有多重要? 如何制作图表非常精美的 Excel 文档? 工作中 Excel 哪个功能最实用? 有哪些值得推荐的数据可视化工具? Excel 有多强大?你用 Excel 做的最酷的事情是什么? 如何快速学习数据透视表? Excel 有哪些和 vlookup 一样重要的函数或功能? 怎样才算精通 Excel? 未经允许,禁止转载,练习文件有想要的么,晚点也更新上来。如果觉得有用,点个赞再走呗~持续更新哦!!

我要回帖

更多关于 vlookup函数往下拉出现同样的数字 的文章

 

随机推荐