INDEX+MATCH函数一组合,赛过VLOOKUP函数

办公一定要科技鸭 2024-08-30 16:48:34

提到查询数据,首先想到的就是VLOOKUP函数。但VLOOKUP查询有两个不便之处:

1、查找值(第一个参数)始终位于查找区域(第二个参数)的第一列;

2、从左向右查找容易,但从右向左查找需要IF或CHOOSE构建新的查找区域。

如例所示:右侧表格里需要根据姓名查找工号,而左侧表格里工号在第一列,姓名在第二列,使用标准的VLOOKUP函数显示查询不了,在不动查询表格的次序的前提下,只能使用VLOOKUP函数和IF函数组合,通过IF{1,0}重新构建一个新的数组,重新排列了姓名和工号,让姓名移动到了第一列,工号移动到了第二列。

很多人,很不好理解这个函数的意思,那么我们今天就来看下另一组函数的组合:INDEX+MATCH。

先来了解下【MATCH函数】

MATCH函数查找指定项在单元格区域中的相对位置,即第几行第几列。

语法:MATCH(lookup_value,lookup_array, [match_type])

中文语法:MATCH(指定项,单元格区域,[匹配方式])

match_type,即匹配方式,参数有三个:

-1,查找小于或等于 lookup_value的最大值;0,查找等于 lookup_value的第一个值;1,查找大于或等于 lookup_value的最小值。

如图所示,查找姓名吕布在姓名列的位置,使用函数公式:=MATCH(H2,B2:B10,0)

这个公式相对好理解,也就是H2单元格里的名字在B2:B10即姓名列中第几个。最后的结果就是第2个。

除了按列查询第几行,也可以查询第几列,如查询姓名这个标题在第几列,函数公式:=MATCH(H5,A1:F1,0),同样好理解这个公式,就是查询姓名在第一行的标题行里是第几列。结果是第二列。

接着咱们再来看下【INDEX函数】

功能:查找单元格区域或数组常量中某行、某列或行列交叉点的值

语法:INDEX(array,row_num, [column_num])

中文语法:INDEX(单元格区域或数组常量,数组中的某行,[数组中的某列])

如图所示,查找吕布的工号。

按我们日常手动查找方式,也是先看姓名在2行,再查找对应的工号里相同行的单元格数字。

而MATCH函数已经查找出姓名所在的行数,用INDEX函数在工号列里获取对应行号的单元格值。

完整的公式为:INDEX(A2:A10,MATCH(H2,B2:B10,0))

多条件查找

面对多条件查找,尤其是两个条件的次序和表格里的次序还不一致的情况,使用VLOOKUP函数也麻烦,而INDEX函数+MATCH函数组合也就轻松搞定。

完整公式:index(f2:f10,match(h2&i2,b2:b10&a2:a10,0))

这里就是多了连接符&连接两个条件,注意次序保存一致就行。

根据需要,添加绝对引用符号。

行列交叉查询:

=INDEX($F$2:$G$10,MATCH(I2,$B$2:$B$10,0),MATCH($J$1,$F$1:$G$1,0))

这里使用了两个MATCH函数,第一个MATCH函数确定查找值所在的行,第二个MATCH函数确定查找值所在的列,最后得出交叉后的位置,在通过INDEX函数获取单元格内的值。

获取最高分的姓名

如图所示,自动获取得分2这列里分数最高的姓名

公式:=INDEX($B$2:$B$10,MATCH(max($G$2:$G$10),$G$2:$G$10,0))

这里先使用了MAX函数获取这列里最大的值,在通过MATCH函数获取这个最大值的位置,最后使用INDEX函数获取同行位置姓名列里的姓名。

获取前三的姓名

如图所示,自动获取得分2这列里排名前三的姓名

=INDEX($B$2:$B$10,MATCH(LARGE($G$2:$G$10,ROW(A1)),$G$2:$G$10,0))

这里先使用LARGE函数+ROW(A1)获取最大的数字。

再用MATCH函数匹配出最大数字的位置。

最后用INDEX函数在同行的姓名列里获取单元格内姓名。

此处用了ROW(a1)函数获取LARGE函数的第二个参数,随着公式往下拖动,自动获取到第二、第三的姓名。

整行提取

=INDEX(C2:G10,MATCH(B13,B2:B10,0),0)

这个公式和上述公式不同的是,前面都是单列或是单行,而这里是一个五列多行的数据区域。

其他都一样,先用MATCH函数获取到行位置信息。

INDEX在这个多行多列区域里根据行号获取整行数据,注意的是,这里INDEX函数的第三个参数用0来代替。

看到这里,INDEX+MATCH函数是不是容易理解,也自由灵活的多,没有那么多的限制条件,使用起来特别的方便呢?

1 阅读:5