Hi,
今天我们聊一下EXCEL基础必备函数vlookup。或许很多人很不屑,这个函数不是很简单吗,我已经会了。不用再了解。
当然,Vlookup函数是一个查找引用函数,也是很多入门EXCEL的人必须要学的一个函数。其实,我想说的是,除去基本功能,vlookup还是很多使用方法,可以帮助我们快速处理数据。
一、什么是Vlookup
Vlookup本意是垂直查找引用,可以允许我们在给定的一个矩阵中,在矩阵中的第几列查找你需要查找的值。如果一旦从上往下找到,可以返回找到所在行的第几列值。
如何深入理解或者记忆这个函数呢?
V指的是vertical,垂直的意思
Look up 指的就是查找
因此这个函数的本意就是垂直查找引用第几列的值。
二、基本语法与功能
基本语法:Vlookup(查找值,查找的矩阵,返回第几列,匹配模式),
VLOOKUP (lookup_value, table_array,col_index_num, [range_lookup])
Vlookup会拿着第一个参数需要查找的值到查找的矩阵中去查询,查找值只会在查找矩阵中的第一列进行查找,即查找值和矩阵的第一列数据类型、数据定义是一致的。
比如我们查找值是姓名,那么被查找列这一列的值肯定是姓名,这个我们在选择查找范围的时候一定要注意。
找到后,我们就要决定返回被找到行的第几列值,然后最终确定是否近似匹配。关于匹配方式,后续再说。一般而言,选择false 或0,即精确匹配。
我们举个例子,我们有个人员薪酬表,我们需要通过员工编号找到其对应的姓名,工资等信息。
先上数据:
我们先用工号查找对应的姓名:
K5单元格公式:
=VLOOKUP(J5,$B$3:$C$27,2,0)
这个要注意如果查找区域不是整列,需要固定选择区域,即绝对引用地址。返回值“#N/A”,表示查不到相关数据。
这个是基本语法。
三、进阶用法
1.结合if函数进行反向查找
现在要通过员工号查找所在部门。
因为部门在员工号的前面,这样就不能选择矩阵,因为员工号无法在矩阵的第一列了。
当然,一种解决方案是将部门调整到表格的最后一列。这里我们暂时不考虑更改表格的内容。我们用if函数来将工号和部门两列进行互换。
语法如下:
IF({1,0},$B$3:$B$27,$A$3:$A$27)
这里有个巧妙的用法,if函数的第一个产生是一个举证{1,0},if先判断是1,执行$B$3:$B$27,然后判断0,执行$A$3:$A$27,这样就实现了两列互换。
其实这是一个数组公式。
然后我们在vlookup中的查找范围就用上面那个互换的范围,L5公式如下:
=VLOOKUP(J5,IF({1,0},$B$3:$B$27,$A$3:$A$27),2,0)
2.模糊查找,实现数据分档
当我们需要对一组数据按一定规则进行分档时,我们可以用if来逐层判断,但更好的方式是用vlookup进行模糊匹配判断。这种解决方案更好理解,也更容易。同时,可以不受条件有多复杂的限制。
例如,我们需要对工资范围进行分档,规则如下:
这个时候我们需要构建一个判断矩阵:
我们在工资区间列进行数据分档判断,G3单元格公式如下:
= VLOOKUP(F3,$J$13:$K$17,2,1)
和基本功能用法唯一的区别就是最后一个参数的值是模糊匹配,值可写1或true。
例如第一个值20215,vlookup会拿这个值去判断矩阵里进行模糊匹配
20215>=0,结果是true,程序继续往下判断
20215 >=10000,结果是true,程序继续往下判断
…
20215 >=20000,结果是true,程序继续往下判断
20215 >=25000,结果是false,程序停止,返回前一步20000对应的范围”2-2.5W”
因此,可以看出当进行模糊匹配的情况下,查找值最多只能大于等于查找范围里面的第一列值。这里面还隐含另外一个条件,就是查找范围的第一列值必须是升序排列。
3.Vlookup+iferror进行去除错误值
当遇到#/A错误时,我们可能需要先判断错误,然后以0或者其它值替代。这个时候我们可以用iferror嵌套vlookup来进行处理:
例如单元格N5公式:
=IFERROR(VLOOKUP(J5,$B$3:$G$27,6,0),"")
函数先判断vlookup是否找不到值,找不到就返回空值,找到返回vlookup找到的值。
可以看到Y00026、Y00027两个不存在的员工号,查找值未出现#N/A的错误。
4.vlookup的替代函数
当用vlookup 返回值的值是数值,且不存在重复的记录。我们可以用sumif,sumifs来汇总数值。因为没有重复的数据,实际的汇总就只有一行。另外遇到不存在的,会直接返回0,省去处理#N/A的错误。
单位格M5的公式:
=SUMIF($B$3:$B$27,J5,$F$3:$F$27)
四、其它注意事项
如果vlookup查找的数据较多,计算速度会比较慢,可以采取一些先按查找字段进行排序。同时,另外可以采取一些动态引用需要的查找区域,例如用indirect函数结合其它函数进行处理。这部分提供一种思路,后续我们有时间再去专题处理,即如何提供vlookup的查找效率。
好了,今日分享到这里。
我们学习基础的函数,一定需要全方位了解其基本功能,了解其运行机制,这样才能举一反三,并与其它函数进行配合使用,从而提高我们的使用效率。
了解一项新知,必须了解其基本概念,即本质。否则,一切都是表象或者幻象。一旦我们面临新的环境下,我们又会变得无所适从。
我是华哥(公号:EXCEL家)。每日精进,不负光阴韶华。
赠人玫瑰,手留余香。欢迎评论、点赞、关注,转发。