excel

关注公众号 jb51net

关闭
软件教程 > 办公软件 > excel >

excel中Vlookup公式大痛点! 不能从下向上查找的多种解决办法

脚本之家

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)

Match函数的作用是查找数据的位置,在数据源表头的这个区域中,籍贯在第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函数的参数

随后再来看下match函数的参数

公式:MATCH(E$13,$A$1:$L$1,0)

以上就是这个公式的所有参数,我们只不过是把match函数放进了vlookup函数的第三参数中,让它帮助我们自动的获取第三参数罢了,因为需要拖动函数,还需要特别注意数据的引用方式,大家可以动手试一下,还是比较简单的。

补充案例:

举个工作中的例子来说明,左边是记录流水数据,会一直更新数据然后我们想查找匹配每种商品,最后一次操作人是谁

1、Vlookup无法解决如果我们使用VLOOKUP公式查找匹配,=VLOOKUP(E2,B:C,2,0)你会发现,当表格中能查找匹配多个值时,它只会返回第一次出现的结果

遇到这种情况,有2种解决方法解决方法一:使用lookup函数公式lookup公式也是可以用来查找匹配的,它的万能通用公式是:=lookup(1,0/(查找值=查找列),结果列)它的查找逻辑和vlookup正好相反,遇到多个查找值时,它是从下向上查找匹配的,所以我们使用的公式是:=LOOKUP(1,0/(B:B=E2),C:C)

解决方法二:XLOOKUP公式XLOOKUP公式只出现在新版本的里面,如果没升级的话,是不能使用的,它的使用用法是:=XLOOKUP(查找值,查找列,结果列,查找不到返回结果,匹配方式,搜索方式)如果说我们,只输入XLOOKUP公式前3个参数,那也是从上向下匹配的:=XLOOKUP(E2,B:B,C:C)

但是,它很灵活,当你想要从下向上搜索的时候,只需要将它的第6个参数,输入-1,就可以了我们输入的公式是:=XLOOKUP(E2,B:B,C:C,,,-1)

关于这个小技巧,你学会了么?动手试试吧!