比Vlookup更厉害的查找函数,这对CP函数你知道吗?
在我们日常制表过程中,经常会用到查找引用相关数据的工作。
其实,这也是大部分小伙伴接触最多的工作之一。
比如:根据员工姓名查找对应的业绩、根据某一商品的货号查找对应的销量等等。
今天,我就给大家介绍一对非常强大的函数组合来实现这个功能。
它们就是 INDEX+MATCH 组合。
具体的应用场景如下:
这里的正向指的是:从左向右查找引用目标值。
也就是查找值在左边,返回值在右边。
如下图,是一季度公司员工的业绩表,我们现在想根据姓名查找对应的业绩。
在【F2】单元格写入如下公式:
=INDEX(C2:C7,MATCH(E2,B2:B7,0))
公式解析:
先用 MATCH 函数查找刘彦在【B2:B7】这个单元格中所在的位置,返回数字 2;
然后将这个数字 2 作为 INDEX 函数的第二个参数,意思是返回 INDEX 第一参数【C2:C7】单元格区域中的第 2 个位置单元格中的值。
MATCH 函数有三个参数:
MATCH(查找值,查找区域,查找类型)
MATCH 函数专门用于查找一个值,在一个区域或者数组中所在的位置,并返回一个数字。
通常将返回的这个数字作为其他函数的参数使用。
这里将返回的数字作为 INDEX 的参数使用。
如果第三参数的查找类型为 0,则表示精确查找。
INDEX 通常也有三个参数:
INDEX(返回的区域,行号,列号)
因为第一参数是单行或者单列,所以第三参数也可以省略。
如果不省略的话,公式也可以写成这样:
=INDEX(C2:C7,MATCH(E2,B2:B7,0),1)
这里的反向指的是:从右向左查找引用目标值。
也就是查找值在右边,返回值在左边。
还以上面的例子为例,比如,我们想查找刘彦的员工编号是多少。
公式如下:
=INDEX(A2:A7,MATCH(E2,B2:B7,0))
公式解析:
这个公式的意思跟正向查找的公式差不多,只是更改了 INDEX 函数的第一参数,将返回的区域变成【A2:A7】区域。
由此可见,无论是正向查找还是反向查找,思路是一样的。
只是把 INDEX 函数的第一参数的区域更改成需要返回的区域即可。
这里的双向指的是:从水平和垂直两个方向查找引用目标值。
如下图:是一季度员工工资表汇总,现在需要查找刘彦 3 月的工资是多少。
公式如下:
=INDEX(B3:D8,MATCH(G3,A3:A8,0),MATCH(H2,B2:D2,0))
公式解析:
先用第一个 MATCH 函数查找刘彦在【A3:A8】这个单元格中所在的垂直位置,返回数字 2;
然后使用第二个 MATCH 函数查找 3 月在【B2:D2】这个区域中所在的水平位置,返回数字 3;
最后将这两个数字分别作为 INDEX 函数的第二和第三参数,意思是返回 INDEX 第一参数【B3:D8】区域中的第 2 行第 3 列这个相交叉单元格中的值,即:8606。
因为这里的双向查找需要涉及两个方向上的位置,故我们在这里使用两个 MATCH 函数来分别定位行和列的位置。
多条件查找是指:根据 2 个或者更多的条件来查找返回对应的目标值,这个在我们日常工作中也经常会用到。
如下图:是一张各地区各货号的销量表,我们想查找南京地区货号为 BH003 的销售量是多少。
条件一:南京;
条件二:货号为 BH003。
在【G2】单元格写入如下公式:
=INDEX(C2:C7,MATCH(E2&F2,A2:A7&B2:B7,0))
公式解析:
公式的基本框架跟上面一样,只是先用「&」文本连接符将两个条件连接成一个新的条件形式;
然后按照上面正向查找的思路进行查找,并返回【C2:C7】区域中的销售量。
MATCH 函数查找「南京 BH003」在新生成的数组中的位置:
MATCH(\”南京 BH003\”,{\”南京 BH001\”;\”南京 BH002\”;\”南京 BH003\”;\”上海 BH001\”;\”上海 BH002\”;\”北京 BH001\”},0)
返回数字 3,然后将这个数字 3,作为 INDEX 函数的第二参数,意思是返回 INDEX 第一参数【C2:C7】单元格区域中的第 3 个位置这个单元格中的值,也就是 72。
因为这个是数组公式,所以该公式需要按【Ctrl+Shift+Enter】三键结束。公式外面的大括号会自动生成。对于使用 Office 365 的小伙伴们可以不用按三键结束。
当然这里的多条件查找,也可以同时应用在水平和垂直两个方向上。
另外,不论有多少个条件,只要先用「&」文本连接符将多个条件连接一个新的条件,然后应用上面的套路查找就行。
区间查找指的是:如果查找值处于某一个区间内,就返回对应的目标值。
如下图,需要根据业绩区间来计算员工的奖金数。
在【G2】单元格写入如下公式:
=INDEX(J2:J5,MATCH(F2,{0;41;81;121},1))
公式解析:
这个公式的特别之处在于 MATCH 函数的第二和第三参数的应用。
如果第三参数是 1 或者省略, MATCH 函数将查找小于或等于第一参数的最大值,并且第二参数中的值必须以升序排序。
这里查找小于 65 的最大值是 41,41 在这个常量数组({0;41;81;121})中的位置是 2,即返回数字 2,然后作为 INDEX 第二参数,最终返回结果 2000。
当然,这里我们也可以将这个常量数组写在一个辅助列里面,可能会更好理解。
如下图:
模糊查找就是通过结合使用通配符(「?」问号和「*」星号)来实现查找目标值。
如下图:我们想查找姓徐开头的,并且是三个字符的员工编号是多少。
公式如下:
=INDEX(A2:A7,MATCH(E2&\”??\”,B2:B7,0))
公式解析:
这里关键在于 MATCH 函数支持通配符的用法。
大家一定要注意下:
「?」问号通配符,代表任意单个字符。
「*」星号通配符,代表匹配任意多个字符。
这里我们用了两个「??」问号,就代表任意两个字符。
PS:这里的问号和星号都是英文半角的噢!
今天,我们一起学习了两个强大的函数组合(INDEX+MATCH)来实现工作中常用的 6 种查找引用功能:
❶ 正向查找;
❷ 反(逆)向查找;
❸ 双向查找;
❹ 多条件查找;
❹ 区间查找;
❺ 模糊查找。
你平时用得最多的一种查找是什么呢?你有哪些关于 Vlookup 的疑问呢?
欢迎给我们留言哦~
比Vlookup更厉害的查找之王,这个函数你知道吗?
小E为同学们准备了40+函数大全,
获取直接在公种号【秋叶Excel】回复【头条】即可~
小李是一位 Excel 函数初级玩家,最近刚学习了 Lookup 函数。
这一天,小李看到同事正在为社区的一张信息表犯愁:
如下图,根据姓名查询年龄。
手痒痒的她,突发奇想,要用刚学的 Lookup 函数在同事面前大展身手!!!
❶ 首先选中数据区域 B2:D12,以「姓名」列作为「主要关键字」进行「升序」排序。
❷ 然后输入以下公式,就搞定了!
=LOOKUP(F3,B3:B12,D3:D12)
小李告诉同事,凡是碰到这类查询问题,都可以按这个模式套用:
=LOOKUP(lookup_value, lookup_vector, [result_vector])
=LOOKUP(查找值,查找区域,返回结果区域)
例如案例中,G3 单元格的公式:
=LOOKUP(F3,B3:B12,D3:D12)
LOOKUP 函数从查找区域 B3:B12(也就是姓名列),找到与 F3 相同的值\”杨山\”;
然后在返回结果区域(也就是年龄这列),找到\”杨山\”对应的年龄位置,返回结果:85。
敲黑板:
在使用 LOOKUP 函数时,【查找区域】必须要升序排序。
否则可能得不到正确结果。
如下图:明明\”杨山\”的年龄是 85,公式结果却是 27!
看看!
不按升序办事,后果很严重!
前面我们介绍的是 LOOKUP 函数在精确匹配上的查找,其实它还可以……
我们接着看案例!
下面这份表,需要用如下规则,为年龄划分组别:
童年:0~6 岁;少年:7~17 岁 ;
青年:18~40 岁 ;中年:41~65 岁 ;
老年:66 岁以后。
❶ 首先按照年龄划分的规则,为 LOOKUP 函数设置参数:
查找值:D3,数值为 74
查找区域(升序排序):G$3:G$7
返回区域:H$3:H$7
❷ 在 E3 单元格输入公式,然后下拉填充:
=LOOKUP(D3,G$3:G$7,H$3:H$7)
如下图所示:
在数轴中,我们先将「查找区域」的数值作为分段点,与之对应的「返回区域」中的文本放在数轴下方。
查找值为 74,也就是位于该数轴的最右侧,由于 Lookup 函数将在「查找区域」中查找小于或等于第 1 参数「查找值」的 最大数值,也就是 66;
而 66 对应的返回区域为老年,所以函数公式中的最终结果为老年。
简言之,就是在数轴中查找小于等于本身的最大分段点,再返回区域中与之对应的结果。
总结一下:
❶ 在使用 Lookup 函数时,必须对「查找区域」按「升序」进行排序,否则无法得到正确的结果。
❷ Lookup 函数将在「查找区域」中查找 小于或等于 第 1 参数查找值的 最大数值;
如果 「查找值」 小于「查找区域」中的最小值,那么 Lookup 函数将返回错误值 #N/A。
❸ Lookup 函数可以用在模糊匹配上,进行分组匹配。
我们知道,使用 Lookup 函数还需要事先对第 2 参数进行排序,那 Lookup 函数究竟有没有直接在乱序中查找的方法呢?
下一篇文章我们继续来探讨~
欢迎在留言区与我们进行讨论。
小E为同学们准备了40+函数大全,
获取直接在公种号【秋叶Excel】回复【头条】即可~
实锤!比Xlookup还好用的函数真的来了
前一段时间,微软突然推出XLookup函数,在各大论坛、微信群和学习群炸开了锅,实实在在的火了一把,可谓来势汹汹,欲取代VLookup而后快。可是有一句古话说得好:强中自有强中手,一山还比一山高,当WLookup被微软推出后,XLookup瞬间走下神坛退居二线。
笔者研究了一下,Wlookup的大致用法如下。
= Wlookup(查找内容,查找值范围,返回值范围,查找模式)
其中查找模式有四种:
-2 是区间查找
-1 是一对多查找
0 查找最后一个
N 查找第N个符合条件的值
看起来这个函数的功能与LOOKUP十分相似,应该属于LOOKUP的加强版。这么有吸引力的新函数,大家怎样来使用它,下面为大家列举几个:
一、单条件查找
=Wlookup(A14,A2:A9,C2:C9)
二、多条件查找
=Wlookup(A14&B14,A2:A9&B2:B9,C2:C9)
注:多条件查找需要用&连接
三、查找第N个符合条件的值
= Wlookup(查找内容,查找值范围,返回值范围,N)
如查找表中第2个林质的考勤分数
=Wlookup(B14,B2:B9,C2:C9,2)
补充:若要查找最后一个,直接将函数中的参数2更改为0就OK了。
四、一对多查找
如下图所示在C14单元格中查找出林质的所有考勤数据,公式为:=Wlookup(B14,B2:B9,C2:C9,-1)
五、按行上下查找
=Wlookup(A6,A1:D1,A2:D2)
六、从左向右查找
如下图所示根据A14单元格中的名字向右查找序号,公式为:=Wlookup(A14,B2:B9,A2:A9)
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。