乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 在excel-VLOOKUP在Excel中的灵活运用

在excel-VLOOKUP在Excel中的灵活运用

作者:乔山办公网日期:

返回目录:excel表格制作

这两天看了不少网上的教程,也找了一些题库实战,整理一下EXCEL中VLOOKUP函数的常用技巧。


首先了解一下绝对引用相对引用的概念,EXCEL默认横向拉动的时候列变行不变,竖向拉动的时候行变列不变。


  • 绝对引用时无论横向还是竖向拉动,行列都不变


  • 相对引用时,$在行前面则横向竖向行动都不变,$在列前面则横向竖向拉动列都不变


基础查找


VLOOKUP(查找目标,查找区域,返回列,0)


下面是一个实例:


在员工信息表中根据员工工号查询员工姓名,我想要在D1:G9的表格区域中查找工号分别为A01048、A05023、A09095的员工姓名,首先查询工号A01048的员工姓名,之后可以直接下拉公式,表格自动填充结果。


注意:


此公式查找目标一定要在查找区域的第一列,比如我通过工号查姓名,那么工号必须在查找区域的第一列,即D1:G9;如果是通过姓名查部门,那么查找区域需要是E1:G9,而且查找区域需要用 $ 符号绝对引用,不然下拉公式的时候区域变化可能会查不到数据。


返回列指查询内容所在列,如我想要查找的是姓名,姓名这一列在D1:G9区域的第二列,所以返回列的值是2,以此类推。


最后一个参数0或1表示函数精确查找或模糊查找。精确即完全一样,模糊即包含的意思。参数如果指定值是0或FALSE就表示精确匹配,而值为1或TRUE时则表示模糊匹配,漏掉该参数则默认模糊匹配。


精确匹配是使用历遍法查找,模糊匹配是使用二分法查找。


公式01


多列查找


VLOOKUP(查找目标,查找区域,COLUMN(A1/B1/C1...),0)


上例通过工号查询姓名,如果想要通过工号同时查询姓名和部门,则可以使用COLUMNS函数。不使用COLUMNS函数往右拖动返回列的值不变,无法查询其他列。


不使用函数直接拖动


使用COLUMNS函数,A1、B1、C1...分别代表1、2、3...,向右拖动直接变化返回列,返回列的值递增。注意不要忘了相对引用查找目标,固定列,此例中为$A3。


公式02


字符的模糊查找


VLOOKUP("*"&查找目标&"*",查找区域,返回列,0)


如我并不知道具体的工号,只知道工号中包含A05,就可以使用模糊查找。第四个参数0是使用遍历法进行精确查找,因此当从上而下查找到包含A05的工号,即停止查找。举例来说,张丽和夏远的工号都包含A05,但是查找出的姓名是张丽,因为张丽在前面。


公式03


数字的区间查找


VLOOKUP(查找目标,查找区域,返回列,1)


由于二分法的原理,引用的数字区域一定要从小到大排序,杂乱的数字是无法准确查找到的。模糊查找的原理是:给一定个数,它会找到和它最接近,但比它小的那个数。


公式04


反向查找


VLOOKUP(查找目标,IF({1,0},查找列,区域列),返回列,1)


注意:这里其实不是VLOOKUP可以实现从右至左的查找,而是利用IF函数的数组效应把两列换位重新组合后,再按正常的从左至右查找。


IF({1,0},查找列,区域列)这是本公式中最重要的组成部分。在EXCEL函数中使用数组时,返回的结果也会是一个数组。这里1和0不是实际意义上的数字,而是1相关于TRUE,0相当于FALSE,当为1时,它会返回IF的第二个参数(查找列),为0时返回第二个参数(区域列)。


公式05


多条件查找


{=VLOOKUP(查找条件A & 查找条件B,IF({1,0},区域A & 区域B,查找区域),返回列,1)}


根据员工号和姓名两个条件查询部门,输入公式=VLOOKUP(A3&B3,IF({1,0},E1:E9&F1:F9,G1:G9),2,0)


以后ctrl+shift+enter自动变成数组形式


{=VLOOKUP(A3&B3,IF({1,0},E1:E9&F1:F9,G1:G9),2,0)}


公式06


公式剖析:


  • A3&B3 把两个条件连接在一起。把他们做为一个整体进行查找。


  • E1:E9&F1:F9,和条件连接相对应,把工号和姓名列也连接在一起,作为一个待查找的整体。


  • IF({1,0},E1:E9&F1:F9,G1:G9) 用IF({1,0}把连接后的两列与G列数据合并成一个两列的内存数组。按F9后可以查看的结果。


  • 完成了数组的重构后,接下来就是VLOOKUP的基本查找功能了,另外公式中含有多个数据与多个数据运算,所以必须以数组形式输入,即按ctrl shift后按ENTER结束输入。


批量查找


{=VLOOKUP(B$9&ROW(A1),IF({1,0},$B$2:$B$6&COUNTIF(INDIRECT("b2:b"&ROW($2:$6)),B$9),$C$2:$C$6),2,)}


公式07


公式剖析:


  • B$9&ROW(A1) 连接序号,公式向下复制时会变成B$9连接1,2,3。


  • 给所有的张一进行编号。要想生成编号,就需要生成一个不断扩充的区域(INDIRECT("b2:b"&ROW($2:$6)),然后在这个逐行扩充的区域内统计“张一”的个数,在连接上$B$2:$B$6后就可以对所有的张一进行编号了。


  • IF({1,0}把编号后的B列和C组重构成一个两列数组。


跨表查找


VLOOKUP(查询目标,查询表!查询区域,返回列,0)


下例跨表查询员工所在部门。


公式08


跨工作表的时候,会以!代表工作表的名字。


跨多表查找


VLOOKUP(查询目标,INDIRECT(工作表名 &查询区域),返回列,0)


如汇总查询各个表中同一个人的工资信息,公式为:=VLOOKUP($A3,INDIRECT(B$2&"!A1:B9"),2,0)


查询区域使用INDIRECT函数构造引用区域,INDIRECT函数的功能:返回由文本字符串所指定的引用,语法格式为 INDIRECT(ref_text,[a1]),ref_text 为对单元格的引用。


indirect函数的引用的两种形式:加引号和不加引号


  • =INDIRECT("B2")——加引号:文本引用——即引用B2单元格所在的文本(1月工资)。


  • =INDIRECT(B2)——不加引号:地址引用——因为B2的值为1月工资,1月工资是工作表的名字,所以引用工作表的区域。


$A3 和 B$2 代表相对引用。


公式09


如果不知道查询目标在哪个表里,则使用公式:


IFERROR(VLOOKUP(查询目标,A表!查询区域,返回列,0),


VLOOKUP(查询目标,B表!查询区域,返回列,0),.....


VLOOKUP(查询目标,N表!查询区域,返回列,0))


意思是从A表开始查询,前面的查询不到就到后面的表中查找。如果有更多的表,那就一层层的套用下去,一直到最后一个N表。


可以简化为:


=VLOOKUP(查询目标,INDIRECT(LOOKUP(1,0/COUNTIF


(INDIRECT({"A表";"B表";"...";"N表"}&"!a:a"),查询目标),{"A表";"B表";"...";"N表"})&"!查找区域"),返回列,0)


  • {""}:大括号内是要查找的多个工作表名称,用逗号分隔


  • a:a :本例是姓名在各个表中的A列,如果在B列则为b:b


End.


作者:栗子


来源:豆瓣




本周直播内容


「什么背景不能转行数据分析?」


1. 你适不适合转行数据分析?


2. 掌握数据分析技能就能转行成功吗?


3. 不是转行,是“升级”!


适合人群:想要转行、跳槽、入职数据分析的你


直播时间:本周四晚20:30


本文标签:在excel(14)

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网