软件下载 点击激活 软件下载

MATCH函数精确匹配

基础语法

MATCH函数的作用是查找某目标值在一行或一列区域中的位置,它的基础语法如下。
MATCH(lookup_value,lookup_array,[match_type])
参数lookup_value代表的是要查找的目标值,参数lookup_array代表的是查找的区域或数组,注意只可以是一行或一列,不可是多行或多列的情况。参数match_type指定的是查找方式,MATCH有以下3种查找方式。
(1)数字0代表精确匹配,本篇着重讲这个参数。
(2)数字1代表模糊匹配,要求查找区域必须升序排列,查找的时候执行“二分法”策略,本书第9篇会专门介绍。
(3)数字-1代表模糊匹配,要求查找区域必须降序排列,查找时是按照从上到下或从左到右的遍历查找方式。在实际工作中,基本上不会用到-1这个参数,所以本章不讲这个参数,大家仅做了解即可。
 
查找目标值在一列或一行中的位置
MATCH函数可以查找目标值在一维区域中的位置。
1.对于纵向区域查找
如图26-1所示,D13:D20是数据区域。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-1纵向区域查找
在F14单元格中输入公式:
=MATCH(“黄承彦”,$D$13:$D$20,0)
这是查找目标值“黄承彦”在D13:D20单元格区域的位置,返回结果为3。在G14单元格中输入公式:
=MATCH(“郭嘉”,{“许褚”;”张飞”;”黄承彦”;”徐庶”;”郭嘉”;”黄权”;”马超”;”庞统”},0)
查找“郭嘉”在数组中的位置,返回结果为5。MATCH函数的第2个参数不仅支持单元格区域,还支持数组的查找。
注意:注意,第3个参数数字0,表示精确匹配。大家在函数初学阶段,千万不要盲目地省略参数、字符,我们在工作中运用函数的目的是“偷懒”,但前提要准确。
2.对于横向区域查找
MATCH函数的查找区域不仅可以是一列纵向数据,还可以是一行横向数据,如图26-2所示,D23:K23是数据区域。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-2横向区域查找
在F26单元格中输入公式:
=MATCH(“张飞”,D23:K23,0)
查找“张飞”在这个横向区域的位置,返回结果为2,同样别忘了MATCH函数的第3个参数写数字0。
在G26单元格中输入公式:
=MATCH(“马超”,{“许褚”,”张飞”,”黄承彦”,”徐庶”,”郭嘉”,”黄权”,”马超”,”庞统”},0)
数组中用逗号分隔表示横向排列,查找“马超”在数组中的位置,返回结果为7。
总结:MATCH查找的是位置,返回的结果是数字。
那么MATCH函数有没有返回结果不是数字的情况?有。例如,第2个参数是一个多行多列的区域:
=MATCH(“张飞”,D23:K24,0)
这里第2个参数是一个2行8列的区域,所以返回结果为#N/A。当查找区域中不包含查找值的情况下,也会返回错误值#N/A。例如:
=MATCH(“宋江”,D23:K23,0)
INDEX加MATCH组合完成各种方式的查找
通过之前的学习,我们发现INDEX函数的第2个、第3个参数都是数字,而MATCH的结果恰好是数字,把它们有效地结合在一起,可以完成很多事情。现在就让它们来完成各种查询操作,如图26-3所示,A1:G9单元格区域是基础数据源,其中A列是部门,B列是员工号,C列是姓名,D~G列是基本工资、绩效奖、加班费及总工资。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-3查找数据源
1.案例:常规查找
根据不同的员工号,查找每个员工号对应的姓名,首先在K3单元格中输入以下公式,查找各个学号在数据源中的位置。
=MATCH(J3,B:B,0)
做精确匹配,千万不要忘记写MATCH的第3个参数0。返回结果为2,说明员工号201位于表格B列的第2行,然后就可以利用INDEX函数来引用这个数字,得到相应姓名,于是将公式写成:=INDEX(C:C,MATCH(J3,B:B,0))
返回结果为“马岱”,将K3单元格的公式向下复制到K5单元格。利用MATCH函数找到位置,然后用INDEX函数去提取相应位置的信息,这就是我们常用的“套路”,计算过程如图26-4所示。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-4常规查找
2.案例:文本数字查找
根据员工号查找对应人员的总工资,J8:J10单元格区域是相应的员工号信息。在K8单元格中输入公式“=INDEX(G:G,MATCH(J8,B:B,0))”,然后将公式向下复制到K10单元格。在K8单元格中很顺利的查找到相应的结果,而K9、K10都是错误值#N/A,如图26-5所示。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-5文本数字查找错误方式
接下来仔细检查一下公式上有没有编写错误。在J9、J10单元格的左上角都有个小的“绿帽子”,这种“绿帽子”的错误提示通常表示单元格数据是文本型数字,我们打开【公式求值】分步计算看看结果,如图26-6所示。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-6公式求值步骤
在求值的步骤中,可以看到MATCH函数的第一个参数为”204″,带了双引号,说明是文本型数字。在MATCH匹配的过程中,要求数据类型一致,基础数据源的员工号列都是数字,所以查找不到这个文本值。把文本型转化为数值型,减负就可以了,如图26-7所示,于是K8单元格的公式变为:=INDEX(G:G,MATCH(–J8,B:B,0))
虽然可以通过公式处理这种特殊的情况,但尽量还要保证数据类型的一致性。一个好的数据源,可以为以后的统计省去很多麻烦。
3.案例:查无此人
同样是根据员工号查找姓名,J13:J15单元格区域是查找的数据源。在K13单元格中输入公式“=INDEX(C:C,MATCH(J13,B:B,0))”,并向下复制到K15单元格,看到K15单元格得到错误值#N/A,如图26-8所示。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-8查无此人步骤1
通过检查,发现基础数据源中员工号是201~208,没有209这个员工号,所以“查无此人”,具体的函数公式怎么写呢?K15单元格是错误值,如果(IF)错误(ERROR)了,怎么办?刚好有一个函数是IFERROR,于是,函数公式完善为:
=IFERROR(INDEX(C:C,MATCH(J13,B:B,0)),”查无此人”)
IFERROR函数的语法为:
IFERROR(value,value_if_error)
IFERROR函数的作用是当第1个参数value为错误值的时候,就执行第2个参数value_if_error语句,如果value不是错误值,结果就返回value本身。所以对于原K15单元格的错误值,就返回相应的结果“查无此人”,效果如图26-9所示。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-9查无此人步骤2
有人对于ISERROR函数和IFERROR函数总是弄混。其实我们不用死记硬背它们的语法,从英文翻译上理解即可。
ISERROR中,IS英文意思为“是”,放在前面表达疑问语态“是不是”,后面跟一个ERROR,就是在问“是不是错误”,只需要回答“是”或“不是”就可以,所以它的结果就是TRUE或FALSE。
IFERROR中,IF表示“如果”,整个意思就是“如果错误”,如果错误的,一般都隐含一句话“怎么办”,所以这个时候就不能只回答“是”或“不是”,而要拿出解决方案,也就是IFERROR的第2个参数。
4.案例:查找一系列值
前面都是根据目标值返回一个对应结果,我们想根据一个查找目标值,返回它的一系列对应值时怎么办,如图26-10所示,根据J18:J20单元格区域的姓名,返回他们的各项工资明细。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-10查找一系列值
写公式还是需要一步步来完成,在K18单元格中输入公式:=INDEX(D:D,MATCH(J18,C:C,0))
可以得到黄月英的基本工资为6200元,然后将公式向右向下复制。注意,只要涉及公式复制就必须想到“图钉”的问题。
首先是D:D,向右复制需要变成E:E、F:F,以引用不同的工资科目,所以不加“图钉”。然后是J18,向右复制始终要引用J列的姓名,而向下复制则要变成J19、J20,所以要把J用“图钉”按住,变成$J18。
最后是C:C,是数据源中的姓名列,要用“图钉”按住,所以完善公式为:=INDEX(D:D,MATCH($J18,$C:$C,0))
最后将公式复制到K18:N20单元格区域。其实公式没有脱离原来最初的结构,只是巧用了“图钉”来完成一系列值的查找,这样就不用在每一列单独写一个公式了。
5.案例:逆向查找
可能很多人都用过VLOOKUP函数,它的强大功能使它几乎成了Excel函数的代名词,然而它的缺陷是只能正向查找。后来被高手开发出了VLOOKUP+IF的逆向查找方式,但是这种方式不适合日常的使用,具体用法我们会在30.3节讲解。
本章讲的INDEX+MATCH是解决逆向查找的好方法,如图26-11所示,根据J23:J25单元格区域的姓名,查询每个人对应的部门及员工号。
ENTERTITLE

MATCH函数精确匹配

MATCH函数精确匹配

图26-11逆向查找
在K23单元格中输入公式“=INDEX(A:A,MATCH(J23,C:C,0))”,按上“图钉”,将公式完善为:
=INDEX(A:A,MATCH($J23,$C:$C,0))
然后将K23单元格的公式复制到K23:L25单元格区域。通过仔细观察会发现,本案例的公式与上一案例的公式基本一致,看着很难的逆向查找操作,用了INDEX+MATCH函数公式后完全零难度。

·END·

快速提取文件夹内的文件名

微信扫一扫加关注,Office自学网官方微信公众号,

专注分享软件安装和视频教程,让你一号在手,办公无忧!

给TA打赏
共{{data.count}}人
人已打赏
办公技巧

字符拆分与合并,快速填充真轻松

2022-11-8 14:58:05

办公技巧

比函数公式快10倍,学会这个技巧随意拆分数据!|薪技巧

2022-11-8 15:17:10

文章版权声明 1、本网站名称:office自学网
2、本站永久网址:https://www.officezxw.com/
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ:1241926466进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索