一、基础用法
1、精确匹配
公式:VLOOKUP(待匹配值,查找范围,范围列数,查找方式)
定义好要输出表的表头和第一列,第一列即为要查找和匹配的父内容,在第二列输入公式,被查找表中一定也要将待查找值放在第一列;
公式举例:=VLOOKUP(B5,$B$54:$D$59,2,0)
一般情况下查找范围要绝对引用,选中范围后fn+f4切换绝对引用全部/行/列;2代表待查找的值在查找范围的第二列;0代表精确查找;
2、区间匹配
公式:VLOOKUP(待匹配值,查找范围,范围列数,查找方式)
与精确查找不同之处在于,待匹配值是一个具体值,但是对应的查找范围中第一列是一个区间范围,这时就要先将这个区间范围的最小值全部单列出来生成一个新列作为查找范围的第一列;
公式举例:=VLOOKUP(B5,$B$54:$D$59,2,1)
此时公式会判断:待匹配值与新第一列的数值的大小,大于Max(最小值)后得到匹配值;
3、反向查找
公式:VLOOKUP(待匹配值,查找范围,范围列数,查找方式)
如果待匹配值在查找范围的右侧,就把待匹配值复制一列放到查找范围的最左边,作为新的第一列再用公式;
4、多条件查找
公式:VLOOKUP(待匹配值,查找范围,范围列数,查找方式)
如果待匹配值是两列或多列内容的组合,在查找的时候,要用&将多列内容组合进行查找;
公式举例:=VLOOKUP(A2&B2,$B$3:$F$5,2,0)
这里待匹配值就是将A2和B2 的内容连接在一起进行匹配;
二、进阶用法
1、屏蔽错误值
在匹配的时候遇到匹配值为空的时候,会报错,是要将空值为空展示,需要用到IFERROR函数:
公式举例:=IFERROR(VLOOKUP(F7,$B$6:$D$11,3,0),"")
将原来的VLOOKUP函数放到IFERROR里面,报错值统一展示为"";
2、通配符查找
利用部分关键词到查找范围中去进行匹配,需要用到通配符,如果是文本值查找,需要将*用""标注;
公式举例:=VLOOKUP("*"&F17&"*",$B$16:$D$21,3,0)
指的是待匹配值中要包括F17的文本内容,前后可以有别的内容;
3、文本<—>数值互相查找
(1)待匹配值是文本,查找范围中的第一列是数值,此时要将待匹配值转为数值形式,将文本*1即可;
公式举例:=VLOOKUP(B27*1,$F$26:$G$31,2,0)
(2)待匹配值是数值,查找范围中的第一列是文本,此时要将数值转化为文本形式,将数值用&""变为数值即可;
公式举例:=VLOOKUP(F27&"",$B$26:$C$31,2,0)
4、查找时去除空格
用替代函数substitute(替代范围," ","")意味着将替代范围中的空格全部替换为空;
公式举例1:=VLOOKUP(SUBSTITUTE(F38," ",""),$B$36:$D$41,3,0)
这是将带匹配值中的空格全部去掉;
公式举例2:=VLOOKUP(F45,SUBSTITUTE($B$44:$D$49," ",""),3,0)
这是将查找范围中的空格全部去掉;
5、查找时去除不可见字符
在匹配时,待匹配值或查找范围中都有可能存在不可见字符,此时要用clean函数去掉;
公式举例:=VLOOKUP(CLEAN(F56),CLEAN($B$54:$D$59),3,0)
注意,在执行的时候要ctrl+shift+enter一起按才行
6、多列批量查找
(1)多列为顺序排列时
此时要用一个待匹配值查找出多列的信息,多列是顺序排列可以一键横拉,此时查找范围要用到column()函数;
公式举例1:=VLOOKUP($G65,$B$64:$E$69,COLUMN(B1),0)
注意:
column( )函数的意思是第几列,括号里填具体的单元格,如果填A1就是第一列,B1就是第二列;
此时待查找值要将列用绝对值锁定,因为往右一键横拉时,待查找值所在列不会发生变化;
(2)多列为乱序排列时
此时要用一个待匹配值查找出多列的信息,多列是乱序排列无法一键横拉,此时查找范围要用到match()函数;
公式举例2:=VLOOKUP($G76,$B$74:$E$79,MATCH(H$74,$B$74:$E$74),0)
注意:
match(待匹配值,匹配范围)函数的意思是从匹配范围中找到待匹配值所在列数,最后返回数值;
此时match中的待匹配值要将行用绝对值锁定,因为是根据匹配表格中的第一行表头确定的在查找范围中的第几列,同一列用的都是同一个表头,所以固定行;
7、跨多表查询
当要从多个sheet匹配数据时,需要用到INDIRECT( )函数,这个函数的作用是间接引用,读取()内的文本对应位置的数据,所以()内数据需要加上"",除非有公式的时候不用加;
公式举例:=VLOOKUP($B126,INDIRECT("表"&COLUMN(C1)&"!$A$3:$F$8"),6,0)
这里column(c1)代表3,indirect后()内的含义就是表3中绝对位置处的数据,当然这里也可以把“表3”这个sheet的名字换成其他,这样就可以直接用一个“”表示了,但这样就不能横向拖拽自动填充表2、表3、表4了,如果需要引用多表数据就需要每一列都用一个VLOOKUP函数了。