在日常工作中我们只要一遇到查找类的问题就会想到vlookup函数,它虽然使用简单,但是局限性却非常的大,那有没有可以替代它的函数呢,当然有啊,今天来给大家介绍一下使用index+match函数组合查找,功能真的很强大,下面我们开始把
因为内容太多,我把文章分成了两部分,今天我们先来学习index和matc函数的基本参数以及用法把。
一, match函数
match的作用是:返回指定数值在指定数组区域中的位置,当有重复数据时,他跟vlookup函数一样也是仅返回第一个查找到的数据的位置
lookup_value:需要在数据表(lookup_array)中查找的值。可以为数值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。也可以使用通配符
lookup_array:要搜索的单元格的区域
match_type:表示查询的方式,用数字-1、0或者1表示,当match_type省略相当于match_type为1的情况。
查询方式为1时为近似查找,查找小于或等于lookup_value的最大数值在lookup_array中的位置,lookup_array必须按升序排列
查询方式为0时,为精确查找,查找等于lookup_value的第一个数值,lookup_array可任意顺序排列:
查询方式为-1时为近似查找,查找大于或等于lookup_value的最小数值在lookup_array中的位置,lookup_array必须按降序排列
是不是看的一头雾水下面我来举个例子实际讲解下
当匹配条件为1时候
当匹配条件为1时候,我们必须对查找列进行升序排列否则会查询到错误值或报错,下面是匹配条件为1时候的两种情况
1.数据中没有匹配值
我们可以看到表中成绩已经升序排列,查找成绩74分,当匹配条件为1时函数会查找小于等于74的最大值即73,他在查找列的第二行所以结果为2
2.数据中有匹配值
表中成绩成绩已经升序排列,查找成绩75分,当匹配条件为1时函数会查找小于等于75的最大值,小于等于75的最大值肯定是75最大,所以返回75所在的位置,它在查找列的第三行所以结果为3
当匹配条件为0时
当匹配条件为0时候,我们不用对数据进行排序,下面是匹配条件为0时候的两种情况
1.数据中没有匹配值
当查询方式为0时候,为精确查找,所依匹配结果为错误
2.数据中有匹配值
精确查找,查找结果为3因为75在数据区域的第三行
当匹配条件为-1时
当匹配条件为-1时候,我们必须对查找列进行降序排列否则会查询到错误值或报错,下面是匹配条件为-1时候的两种情况
1.数据中没有匹配值
我们可以看到表中成绩已经降序排列,查找成绩74分,当匹配条件为-1时函数会查找大于等于74的最小值即75,他在查找列的第7行所以结果为7
2.数据中有匹配值
表中成绩成绩已经降序排列,查找成绩75分,当匹配条件为1时函数会查找大于等于75的最小值,大于等于75的最小值肯定是75最小,所以返回75所在的位置,它在查找列的第三行所以结果为7
以上就是match函数的基本内容了我们使用index+match查找一般使用的是精确匹配,近似匹配如果不太明白只需了解就可以了
二,INDEX函数
INDEX 函数的作用是:返回表格或区域中的值或值的引用,它一共有两种形式的用法,使用index+match进行查找时候,主要是运用其数组形式,对于另一种形式就不多做介绍了,下面让我们来看下它的具体参数
Array:一个单元格区域或数组常量。如果数组中只包含一行或一列,则可以不使用相应的 row_num 或 column_num 参数。如果数组中包含多个行和列,但只使用了 row_num 或 column_num,INDEX 将返回数组中整行或整列的数组。
Row_num:要返回值的数组中的行。如果省略 row_num,则需要使用 column_num。
Column_num:要从中返回值的数组中的列。如果省略 column_num,则需要使用 row_num。
下面让我看下具体的例子把
当数据只有一行或者一列时候的
我们可以看当数据只有一行或者一列时候,我们只需要输入对应的行号或者列号即可查询到正确的结果
1.仅有一行数据
当仅有一行数据,我们省略行号,或者填写0,然后填写列号即可得到需要查找的数据
2.仅有一列数据
当数据是一个区域时候
我们必须同时输入行号和列号来确定,
在这里需要提醒下当数据为区域,我们省略一个行号或者列号,函数会查找整列,这样的话就会变成一个数组公式需要按ctrl+shift+回车进行填充,在这里就不多做介绍了大家了解就可以了
今天的内容就是这么多,下节课我们将真正开始学习怎么利用index+matc函数进行查询
您的关注,评论以及点赞是和尺寸更新的动力哟
找对象扫码
联系客服