简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。
哈喽大家好,我是老表,之前三篇文章给大家分享了 Excel lookup家族的vlookup、hlookup、lookup和xlookup1、Excel中超级好用的VLOOKUP,解决工作难题(讲vlookup)
2、我去,Excel还有这个操作(讲hlookup和lookup)
3、神了,Excel的这个操作我今天才知道(讲xlookup)
今天,我们来聊聊Excel查询函数最后一对MATCH+INDEX。1、MATCH and INDEX基本介绍
MATCH(lookup_value, lookup_array, [match_type])
MATCH包含三个参数,前两个为必须参数,第三个为可选参数,第一个参数lookup_value表示要在lookup_array(查找区域)匹配的值,第二个参数lookup_array表示查找区域,这两个参数与之前vlookup中的含义是一致的,很好理解,第三个参数match_type表示lookup_value与lookup_array中值的匹配方式:
match_type 默认为11 :查找小于或等于 lookup_value 的最大值。lookup_array 参数中的值必须以升序排序。 0 :查找完全等于 lookup_value 的第一个值。lookup_array 参数中的值可按任何顺序排列。 -1 :查找大于或等于 lookup_value 的最小值。lookup_array 参数中的值必须按降序排列
这里第三个参数我们可以理解成vlookup的第四个参数range_lookup,近视(模糊)查找还是精确查找。特别注意:a.模糊查找时,查找区域需要有顺序;b.MATCH函数返回的是查找值(lookup_value)在查找区域(lookup_array)的位置;c.lookup_array参数只能是一行或者一列。
INDEX(array, row_num, [column_num])
INDEX也包含三个参数,前两个为必须参数,第三个为可选参数,第一个参数array表示传入数组,也可以叫做查找值所在区域,第二个参数row_num表示查找值在array的第几行,最后一个参数column_num表示查找值在array的第几列,函数返回值为查找区域的第row_num行、第column_num列所对应的单元格内的值。数据我们还是利用之前的:
使用INDEX+MATCH查找思路:利用MATCH函数查找到查找值所在列号和行号,然后根据列号推导出返回结果所在列号,然后根据返回结果所在列号、行号,利用INDEX查找到返回结果对应值。2、逆向查找:根据姓名 王五 查找到其对应的学号。
图A
需要注意的是,使用MATCH函数查找行号的时候,查找区域选择查找值所在列即可,使用MATCH函数查找列号的时候,查找区域选择表格表头即可,当然这个我们也可以使用数据验证去动态操控,另外需要注意的是,由于列和行都是无序的,所以MATCH函数最后一个参数需要写0,表示精确查找,当然,也可以添加辅助列,使得其有序,第三个参数就不用了(默认为1),如下图所示:
图B
特别注意:图A中
INDEX(B3:G10,MATCH(C12,C3:C10,0),MATCH(C3,B3:G3,0)-1)这里 INDEX 第三个参数MATCH(C3,B3:G3,0)-1表示返回值与查找值的列序号相差1,从图中可以看出返回值在查找值的前一列,所以-1.
图B中
INDEX(A2:H10,MATCH(D6,D2:D10),MATCH(D2,A2:H2)-2) 这里 INDEX 第三个参数MATCH(D2,A2:H2)-2表示返回值与查找值的列序号相差2,从图中可以看出返回值在查找值的前两列,所以-2.
3、模糊查找+联动查找
根据姓名查找对应学生的:学号、住址、语文成绩、语文成绩对应等级。
怕视频不够清晰再次强调
1、数据验证这个功能还是很常用的,序列可以动态查找;2、MATCH匹配时默认是模糊匹配,查找值所在区域需要是升序排列,如果想改为精确查找,则最后一个参数设置成0即可。
4、总结一下INDEX+MATCH看起来很复杂,写起来也很复杂,但其实理解其功能逻辑后,会发现,使用的方便性不比VLOOKUP差,目前还没遇到什么是VLOOKUP解决不了非得要用INDEX+MATCH的,如果你有一些好的使用想法和建议,欢迎评论区交流。