作者:木禾乔--七禾
VLOOKUP是excel中常用的函数之一,在《VLOOKUP函数的使用方法(入门初级篇)》我们介绍了VLOOKUP函数的基本用法,今天我们来讲讲VLOOKUP函数的进阶篇。
一、不按源表数据顺序查找多列对应值
在初级篇中我们介绍了按源表数据顺序查找,如下:
当时我们设置公式为:
=VLOOKUP($A$16,$A$3:$E$10, COLUMN(D1),0)。
上表中我们查找的数据为三季度四季度,这与源表顺序相一致。但如果我们不按该顺序查找呢?如果我们要按下图的顺序查找又该如果设置公式?很显然COLUMN完全派不上用场。
这时我们需要用到别外一个查找函数MATCH,MATCH函数指返回符合特定值特定顺序的项在数组中的相应位置
函数语法:
=MATCH(条件,包含条件的区域,匹配方式)
我们先来做一个验证,如上图所示,查找“四季度”在 A3:E3区域中的位置,结果为5。这正是我们所需要的。
将公式设置为:
=VLOOKUP($A$20,$A$3:$E$10,MATCH(B19,$A$3:$E$3),0)
最后我们来对比回顾一下:
按源表数据顺序查找多列对应值公式:
=VLOOKUP($A$16,$A$3:$E$10, COLUMN(D1),0)
不按源表数据顺序查找多列对应值公式:
=VLOOKUP($A$20,$A$3:$E$10,MATCH(B19,$A$3:$E$3),0)
二、模糊查找对应值
当给定的条件数据只有部份匹配时我们又该如何设置公式呢?
如下图的数据,我们要查找开头为“福”字的相应数据,
我们发现将条件“福州”必为“福”时,原公式结果为错误,这是因为条件不同造成的,在excel中有两个通配符:
星号(*)代表所有字符,如:“福*”表示开头包含福字的意思。
问号(?)代表一个字符,如:“福 ??”表示开头包含福字的三个字。
将上图公式改为:
=VLOOKUP($A$16&"*",$A$3:$E$10, COLUMN(D1),0)
三、逆向查找数据
查找三季度销售数量为65的销售区域,我们看到在上图中,条件区域在D列,而查找的值在A列,而VLOOKUP函数只能按首列查找,不能逆向查找,既然如此,那就得想办法将非首列的区域转换成首列。怎么转换区域呢,这时IF函数就派上用场。
先来看看我们设置的公式:
=VLOOKUP(A16,IF(,D3:D10,A3:A10),2,0)
IF(,D3:D10,A3:A10这是本公式中最重要的组成部分。在EXCEL函数中使用数组时,返回的结果也会是一个数组。这里1和0不是实际意义上的数字,而是1相关于TRUE,0相当于FALSE,当为1时,它会返回IF的第二个参数(D列),为0时返回第二个参数(A列)。根据数组运算返回数组,所以使用IF后的结果返回一个数组(非单元格区域):{"三季度","区域";"84","南京";"76","广州";"82","宁波"……}。
四、屏蔽错误值
VLOOKUP函数如果查找不到对应值会显示错误值#N/A,这个看起来很不美观。这时我们可以在外面加个容错函数IFERROR:
=IFERROR(VLOOKUP(A16,A3:E10,5,0),"")
函数语法:
=IFERROR(表达式,错误值要显示的结果)
说白了就是将错误值显示成你想要的结果,不是错误值就返回原来的值。
以上就是VLOOKUP函数的几种用法,当然VLOOKUP函数的用法还有很多。函数公式的魅力,在于函数之间的嵌套组合,从而产生无穷变化,将不可能变成可能。
领取专属 10元无门槛券
私享最新 技术干货