Hello,大家好,今天我们来解决一个vlookup的痛点,相信很多人都遇到过,先来看下今天的例子,如下图所示,当我们需要查找多列结果的时候,只能使用vlookup来一列一列的查找,非常的耗费时间,那么有没有什么方法能使用一次vlookup就能找到所有的结果呢?当然有了,今天就跟大家分享下解决方法
一、观察公式差异
首先我们先来观察下公式的差异,分别查找下李白的籍贯与性别,看下这2个公式的差异有哪些,以便总结规律
- 查找籍贯公式为:=VLOOKUP(D13,$A$1:$K$10,6,FALSE)
- 查找性别公式为:=VLOOKUP(D13,$A$1:$K$10,7,FALSE)
通过观察我们可以发现,这2个公式的唯一不同的只有第三参数,vlookup第三参数的作用是查找结果所在的列数,如果我们可以自动的获取vlookup的第三参数,就可以实现利用1次vlookup就能查找的所有的结果,想要实现这个效果我们需要用到match函数
二、match函数的使用方法
- Match函数:返回数值在数组区域中的位置
- 语法:=MATCH(lookup_value, lookup_array, [match_type])
第一参数:查找值
第二参数:查找的数据区域
第三参数:匹配类型,在这里我们直接写0即可,0就表示精确匹配
说白了match函数的作用就是查找数据的位置,在这里我们需要利用match找一下查找项目在数据源表头中的位置,比如在这里我们查找一下籍贯在数据源表头中的位置,只需要将公式设置为:=MATCH(E13,A1:K1,0)即可,他的结果正好是6,这样的我们就可以将match函数嵌套进vlookup的第三参数中,达到自动获取第三参数的效果
跟大家简单的讲解下这个公式的计算过程,公式为:=MATCH(E13,A1:K1,0)
第一参数:E13 ,就是查找值,在这里它对应的值为籍贯
第二参数:A1:K1。就是查找的数据区域,它对应数据源表头这个区域
第三参数:0,表示精确匹配
的作用是查找数据的位置,在数据源表头的这个区域中,籍贯在第6个位置,所以函数的结果就是6,这个就是函数的计算过程
三、嵌套公式
前面已经说了,我们只需要将match函数嵌套进vlookup的第三参数中即可使用1次函数查找多列结果,因为我们需要拖动填充函数,还需要设置相应的单元格引用方式,在这里我们需要在E14单元格中将公式设置为: =VLOOKUP($D14,$A$1:$K$10,MATCH(E$13,$A$1:$L$1,0),FALSE),然后向右拖动,向下填充即可找到所有的结果,下面跟大家简单的讲解下这个公式的参数
这个公式主体上是一个vlookup函数,在vlookup函数中嵌套了一个match函数,所以我们先来看下vlookup函数的参数
第一参数:$D14,查找值,需要注意的是在这里需要锁定字母标号
第二参数:$A$1:$K$10,查找区域,需要注意的是查找区域进行绝对引用
第三参数:MATCH(E$13,$A$1:$L$1,0),返回的结果列,用mtach来自动获取
第四参数:false,表示精确匹配
随后再来看下match函数的参数
公式:MATCH(E$13,$A$1:$L$1,0)
第一参数:E$13,查找值,在这里需要锁定数字标号
第二参数:$A$1:$L$1,查找的数据区域,表头所在的数据区域,需要绝对引用
第三参数:0,表示精确匹配
以上就是这个公式的所有参数,我们只不过是把match函数放进了vlookup函数的第三参数中,让它帮助我们自动的获取第三参数罢了,因为需要拖动函数,还需要特别注意数据的引用方式,大家可以动手试一下,还是比较简单的。