一、了解函数语法
公式:=VLOOKUP(查找值,数据表,列序数,[匹配条件])
解析:
公式的含义=VLOOKUP(找什么,在哪找,第几列,精确找还是大概找一找)
第4个参数[匹配条件]:
为0时,代表精确查找(必须完全一致)
为1时,代表模糊查找(缺省也默认模糊查找,如果找不到精确匹配值,则返回小于“查找值”的最大数值)
看到这里你可能还是有点懵逼,那么我们就举几个例子来看看。
二、精确查找
如,想要在左侧表格查找学号为1002的学生成绩,输入到右侧,这属于精确查找:
对应VLOOKUP(找什么,在哪找,第几列,精确找还是大概找一找),我们来分析下:
- 我们想找什么?——E2单元格对应的分数
- 在哪个范围找?——A2:C10
- 对应的分数在第几列?——范围的第3列(C列)
- 精确找还是大概找一找?——精确找
得出公式:=VLOOKUP(E2,A2:C10,3,0)
三、模糊查找
模糊查找在很多时候用处也很大,比如右边有分数段和对应等级,我们想要把这个标准匹配到左边的表格里,给学生划分优良差等级,怎么做?
解析思路:先用vlookup函数,算出D2的等级,再通过下拉输入所有学生等级。
- 我们想找什么?——C2分数对应什么等级
- 在哪个范围找?——$G$2:$H$4(注意,通过F4加上$符号即可将范围锁定,下拉拖拽公式时,范围不会改变)
- 对应的等级在第几列?——范围的第2列(H列)
- 精确找还是大概找一找?——分数是一个范围,所以是模糊查找。(输入1即可,注意数据区域要按从小到大排列)
得出公式:=VLOOKUP(C2,$G$2:$H$4,2,1)
四、字符模糊查找
比如我们想在左侧表格,找到产品名称包含AA的产品价格,并输入到E2,就可以用到字符模糊查找。
这里引入一个通配符的概念:通配符“*”可表示任意文本,把*放在字符的两边:
即‘*’ & AA& ‘*’代表包含AA
- 我们想找什么?——包含D2产品名称的产品所对应的价格
- 在哪个范围找?——A2:B7
- 对应的结果在第几列?——范围的第2列(B列)
- 精确找还是大概找一找?——在【查找值】里应用了通配符,可以应用精确查找。
公式:=VLOOKUP(‘*’&D2&’*’,A2:B7,2,0)
五、反向查找
即通过查找右边列查找返回左边列,一般VLOOKUP从左向右查找,那么反过来怎么做呢?
先上公式:=VLOOKUP(E2,IF({1,0},B2:B10,A2:A10),2,0)
解析:
- IF({1,0},B2:B10,A2:A10)是实现反向查找的关键,他的意思是IF(测试条件,真值,假值)。
- 这里1和0不是实际意义上的数字,而是1相关于TRUE,0相当于FALSE。
- 我们这里设定,当为1时,它会返回IF的第一个参数(B2:B10),为0时返回第二个参数(A2:A10)。这样一来,数组A列和B列就成功互换了。
六、多条件查找
查找下图中华东地区B产品销售额(需要满足地区为华东,产品为B)
解析:
- 我们想找什么?——根据E2&F2查G2
- 在哪个范围找?——A2:A10&B2:B10需要连在一起作为被查找部分,再把C列囊括进来
- 对应结果在第几列?——A2:A10&B2:B10视作一列,那么在范围的第2列(C列)
- 精确找还是大概找一找?——精确查找
公式:{=VLOOKUP(E2&F2,IF({1,0},A2:A10&B2:B10,C2:C10),2,0)}
- 这里利用数组(地区和产品分类)求得均满足条件的销售额,E2&F2连接在一起作为整体要查找值,A2:A10&B2:B10对应连接在一起作为被查找部分,再利用IF({1,0}把C列囊括进范围。
- 这样数组被重新配置成一个新的结构,相当于一个新表,下面就可以利用VLOOKUP的基本查找功能了
- 公式两边的大括号 {公式} ,不是手输,是鼠标放在编辑栏同时按Ctrl+Shift+Enter得到的,俗称三建结束或组合键结束。
七、一对多查询
VLOOKUP能否一对多查询?即符合某查询条件的多个查询结果均返回。比如经典组合数组函数INDEX+SMALL+IF。
但是数组函数有个缺点是对于内存耗用较大,经常使用表格的朋友都遇到过内存耗用过多软件、电脑罢工的情况,而VLOOKUP函数可以不使用数组运算,大大减少内存消耗。
– 7.1 –
公式:=IF(B2=$E$2,COUNTIF($B$2:$B2,$E$2),””)
解析:
- 先在A列增加辅助列,对于符合条件的按1、2、3……在A列自动编号,查询时只要查询编号就可以了。
- 在辅助列中,对于不是供货商A的显示为空,是供货商A的依据$B$2:$B2区域的值计数。这就实现了供货商A在辅助列按1、2、3……编号了。这里注意($)符号的运用。
– 7.2 –
公式:=IFERROR(VLOOKUP(ROW(A1),A:C,3,0),””)
解析:
ROW(A1)的值等于1,ROW(A2)的值等于2,利用VLOOKUP查找ROW(A*),返回第3列C列,就返回了所有、满足条件的值。IFERROR函数的作用是对于查询不到的返回空,屏蔽错误值。
八、同时查询多列
VLOOKUP函数第3个参数表示返回的值在第几列,我们经常将第3个参数修改为数字2、3、4……实现,如果项目很多修改起来很不方便。我们可以通过COLUMN函数,一次输入公式查询所有按顺序的返回结果:
公式:=VLOOKUP($G2,$A:$E,COLUMN(B2),0)
解析:通过COLUMN函数产生列号从而得到2、3、4……,替代参数3,无论多少有个项目都可以实现一个公式查询所有返回结果。这里也注意($)符号的运用。
九、提取电话号码
如果电话号码混杂在一串杂乱无章的字符中,我们怎么能够把它提取出来呢?如下图,是不是感觉无从下手?VLOOKUP就能做得到。
公式:{=VLOOKUP(0,MID(B2,ROW($1:$99),11)*{0,1},2,0)}
解析:
- 这里利用MID函数将文本拆成分别从第1个字符、第2个字符……开始的11位长度的字符串,然后分别乘以{0,1}。如果拆出来的字符串为11位文本,再乘以0或1,结果为错误值{错误,错误},如果拆出来的字符串为11位数字,再乘以0或1,结果为{0,18812345678}。
- 接着发挥VLOOKUP的作用,在新数值区域第一列用0查找时,返回的结果便是0对应的11位电话号码。