别再用Vlookup了,试试index+match组合查询,比它好用太多了
常用函数的第五篇来了!这节我们来学习下index与match函数,这个组合相信很多人都用过,很多喜欢将index+match与Vlookup进行比较,我觉得他们各有优点,但是如果非要选择一个话,我会选择 index+match因为它更加灵活,功能也更加强大!下面我们就来学习下吧
Index函数:根据数据区域中的行列号返回区域中对应的值
语法:=INDEX(array, row_num, [column_num])
如果第一参数仅仅只有一行或者一列,我们就能省略对应的行列标号。
如需下图,我们想要找到武则天的数学成绩
公式:=INDEX(A1:D9,5,3)
在A1:D9这个数据区域中,第五行(武则天)与第三列(数学)它们的交叉处,就是我们需要的结果
语法:=MATCH(lookup_value, lookup_array, [match_type])
如下图,我们想要查找【武则天】这姓名在第一列的位置
公式:=MATCH(F3,A1:A9,0)
结果为5,就表示在A1:A9这一列数据中,【武则天】是在第五个位置的
match函数是查找数据的位置,而index函数它是根据位置来返回对应的数据。所以我们只需要将match函数嵌套在match函数中就能达到数据查询的效果。下面来看下它都能解决哪些问题吧
如下图,我们想要查找张飞的数学成绩
公式:=INDEX(D1:D9,MATCH(G3,A1:A9,0))
这个案例是index+match最常见的使用方法,将第一参数设置为需要返回的结果列,就可以将第三参数省略掉,我们仅仅只需要使用mtach函数来确定数据的位置即可
Index+match的反向查找与常规查询是一样的操作,它既可以查找右侧数据,也能查找左侧数据,非常灵活
如下图,我们想要查找3212这个学号对应的姓名
公式:=INDEX(A1:A9,MATCH(G3,B1:B9,0))
Index+match在进行数据查询的时候,如果遇到重复值也是仅仅只能返回第一个找到结果,这个时候我们就需要再增加一个条件让结果变得唯一。
如下图,我们想要找下【2班韩信】的英语成绩
公式:=INDEX(E2:E10,MATCH(H4&I4,B2:B10&C2:C10,0))
这个公式本质上还是一个index+match的常规查询的格式,关键是match函数的第一跟第二参数
连接后,我们的查找值就变为了【2班韩信】这个值是唯一的,是可以找到对应的结果的
index+match也是可以实现一次查找多行多列数据的,我们只需要在第一个单元格中输入公式,然后向下向右填充即可
公式:=INDEX($B$2:$H$11,MATCH($J3,$B$2:$B$11,0),MATCH(K$2,$B$2:$H$2,0))
现在第一参数是多列数据,所以我们只需要使用2次match函数找到对应的行列号即可
以上就是这一节的全部内容,其实关于index+match还有很多高阶的操作,只不过太难了,不建议大家学,现在新函数层数不穷,很多高阶的函数操作都已经被淘汰掉了,我的宗旨就是:什么简单学什么,怎么方便怎么来!
我是Excel从零到一,关注我,持续分享更多Excel技巧
以上内容在我的专栏中都有讲到
如果你想要学习Excel,提高工作效率
这里↓↓↓
Index+Match查询引用技巧解读,绝对的黄金搭档
查询引用,用的最多的应该是Vlookup或Lookup函数,其实,除了这两个函数之外,查询引用还有一组黄金搭档就是Index+Match。
一、查询引用黄金搭档Index+Match:Index函数。
功能:在特定的单元格区域中,返回行列交叉处的值或引用。
Index函数有两种用法
(一)数组形式。
语法结构:=Index(数组,行号,[列号]),当省略[列号]时默认为第一列。
目的:返回指定行、列交叉处的值。
方法:
在目标单元格中输入公式:=INDEX(B3:E9,I3,J3)、=INDEX(C3:D8,I4,J4)。
解读:
从上述示例的对比中可以得出,行、列交叉处的值是相对于第一个参数数据范围而言的,如=INDEX(B3:E9,1,1)的值为“键盘”,而=INDEX(C3:D8,1,1)的值为“16230”。
(二)引用形式。
语法结构:=Index(数组1,数组2……,行号,[列号],[区域值]),区域值指的是指定数据中的第X个数组,[列号]、[区域值]省略时默认为1。
目的:返回第2个区域中行列交叉处的值。
方法:
在目标单元格中输入公式:=INDEX((B3:E9,C3:D9),I3,J3,2)。
解读:
从公式中看出,数据范围有两个,分别为B3:E9,C3:D9,I3和J3是行和列,最后一个参数“2”为指定的数据范围,暨行、列是相对于C3:D9而言的,对B3:E9无效。
二、查询引用黄金搭档Index+Match:Match函数。
功能:提取指定值在指定范围中的相对位置。
语法结构:=Matct(查询值,数据范围,[匹配模式]),其中匹配模式分为-1(大于)、0(精准)、1(小于)三种。
目的:提取“商品”的相对行数。
方法:
在目标单元格中输入公式:=MATCH(H3,B3:B9,0)。
解读:
返回的结果是相对于指定的数据范围而言的,如果数据范围不同,则相同的值会返回不同的结果。
三、查询引用黄金搭档Index+Match:查询引用。
(一)单列查询。
目的:查询“商品”的“销售额”。
方法:
在目标单元格中输入公式:=INDEX(B3:E9,MATCH(I3,B3:B9,0),4)。
解读:
1、在数据范围B3:E9范围中,找出行为MATCH(I3,B3:B9,0),列为4交叉处的值。
2、=MATCH(I3,B3:B9,0)定位I3在B3:B9中的相对位置。
(二)多列查询。
目的:根据“商品”名称查询对应的“销量”等其他信息。
方法:
在目标单元格中输入:=INDEX($B$3:$F$9,MATCH($I$3,$B$3:$B$9,0),MATCH(J$2,$B$2:$F$2,0))。
解读:
1、在数据范围$B$3:$F$9中,返回行为MATCH($I$3,$B$3:$B$9,0),列为MATCH(J$2,$B$2:$F$2,0)交叉处的值。
2、因为数据要跨列引用,所以部分参数要绝对或混合引用,原则为不变的为“绝对”,变化的为“相对”,根据实际情况灵活对待。
结束语:
本文从Index函数和Match函数本身的功能出发,对其进行巧妙组合,实现查询引用的功能,其基本思路就是用Match函数确定查询值的位置,然后用Index函数进行提取。对于使用技巧,你Get到了吗?
必学函数组合INDEX+MATCH,比VLOOKUP函数好用100倍
工作中,我们常常会使用VLOOKUP来进行各种各样的查找,但有时候问题并不简单,用VLOOKUP函数实现比较难,这时候我们就可以考虑使用其它方法,比如我今天要重点跟大家讲解的INDEX+MATCH函数组合。
下面是INDEX+MATCH函数组合的几个用法,看看跟VLOOKUP相比,是否更加简单一点!
一、逆向查找。
下图中,根据F列的产品在B:D数据源中查找对应的编号。
方法一:使用INDEX+MATCH函数组合。
在G3单元格中输入公式“=INDEX($B$2:$B$7,MATCH(F3,$C$2:$C$7,0))”,按回车键,然后将公式下拉填充至G5单元格即可。
公式解析:
MATCH(F3,$C$2:$C$7,0):根据F3单元格的产品名称在C2:C7单元格区域中查找位置。这里返回的结果为5。也就是说产品E在C2:C7单元格区域中位置为5。
=INDEX($B$2:$B$7,5):根据MATCH函数查找到的位置在B2:B7单元格区域中取值。也就是说在B2:B7单元格区域中取出第5行的值,也就是G3单元格的结果Y1023。
方法二:使用VLOOKUP函数。
在G3单元格中输入公式“=VLOOKUP(F3,IF({1,0},$C$2:$C$7,$B$2:$B$7),2,0)”,按回车键,然后将公式下拉填充至G5单元格即可。
公式解析:
IF({1,0},$C$2:$C$7,$B$2:$B$7):因为VLOOKUP函数无法直接进行逆向查找,所以需要借助IF或者CHOOSE函数重组查找区域。该公式是将查找区域重组成一个产品在前,编号在后的新查找区域。
二、多条件查找。
下图中,根据H列的产品和I列的季度在B:F数据源中查找对应的销量。
方法一:使用INDEX+MATCH函数组合。
在J4单元格中输入公式“=INDEX($C$2:$F$7,MATCH(H4,$B$2:$B$7,0),MATCH(I4,$C$1:$F$1,0))”,按回车键,然后将公式下拉填充至J6单元格即可。
公式解析:
MATCH(H4,$B$2:$B$7,0):根据H4单元格的产品名称在B2:B7单元格区域中查找位置。这里返回的结果为3。
MATCH(I4,$C$1:$F$1,0):根据I4单元格的产品名称在C1:F1单元格区域中查找位置。这里返回的结果为2。
=INDEX($C$2:$F$7,3,2):根据MATCH函数查找到的位置在C2:F7单元格区域中取值。也就是说在C2:F7单元格区域中取出第3行,第2列的值,也就是J4单元格的结果320。
方法二:使用VLOOKUP函数。
在J4单元格中输入公式“=VLOOKUP(H4,$B$2:$F$7,MATCH(I4,$C$1:$F$1,0)+1,0)”,按回车键,然后将公式下拉填充至J6单元格即可。
公式解析:
MATCH(I4,$C$1:$F$1,0)+1:根据I4单元格的季度在C1:F1单元格区域中查找位置。这里返回的结果为2。因为B:F表格区域前面多了一列空白列,所以这里需要加1。
三、模糊查找。
下图中,我们要根据E列的公司名称在B:C数据源中查找对应的销售额。
方法一:使用INDEX+MATCH函数组合。
在F3单元格中输入公式“=INDEX($C$2:$C$5,MATCH(\”*\”&E3&\”*\”,$B$2:$B$5,0))”,按回车键,然后将公式下拉填充至J6单元格即可。
公式解析:
MATCH(\”*\”&E3&\”*\”,$B$2:$B$5,0):这里使用通配符“星号(*)”作为查找的对象,\”*\”&E3&\”*\”表示包含E3单元格内容的字符。
方法二:使用VLOOKUP函数。
在F3单元格中输入公式“=VLOOKUP(\”*\”&E3&\”*\”,$B$2:$C$5,2,0)”,按回车键,然后将公式下拉填充至J6单元格即可。
公式解析:
\”*\”&E3&\”*\”:将E3单元格前后连接两个通配符作为查找值,这里表示包含E3单元格内容的字符即可。
INDEX+MATCH组合和VLOOKUP对比,你觉得哪个更简单呢?欢迎留言讨论,期待您的点赞和转发分享!
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。