本文的标题是《每天学一点Excel2010 (88)——Match》来源于:由作者:陈邓奇采编而成,主要讲述了192 match
助记:英文的“匹配”。
类别:查找和引用
语法:
match(look
192 match
助记:英文的“匹配”。
类别:查找和引用
语法:
match(lookup_value,lookup_array,[match_type])
参数:2~3个参数
- lookup_value 必需。要在指定区域中进行查找的索引值。可以是值(数字、文本或逻辑值)或值的单元格引用。
- lookup_array 必需。要搜索的一维数组,即如果是单元格区域,必须是1行或1列。
- match_type 可选。默认值为1。共有三种情况:
1或省略:查找小于或等于lookup_value的最大值,lookup_array参数中的值必须按升序排列,如:…-2,-1,0,1,2,…,A,B,…Y,Z,false,true。
0:返回等于lookup_value的第1个值,lookup_array参数可以按任何顺序排列。
-1:查找大于或等于lookup_value的最小值,lookup_array参数中的值必须按降序排列,如:true,false,Z,Y,…A,…2,1,0,-1,-2,…。
用法:
在指定的一维数组,或作为数组引用的1行、1列单元格区域中搜索指定索引值,返回该项或近似项在单元格区域中的位置。根据可选参数的不同,数组元素可能要提前排好升序或降序,否则结果可能不对。
举个例子,所有同学都站成一队,我们要找一个身高正好等于1.8米的人。没有的话,退而求其次,找个最接近1.8米的。
1)新建一个工作表,在A1单元格输入“=randbetween(150,200)/100”生成一个1.50~2.00的随机数,代表身高。
2)向下填充A列的15个单元格,为了防止随机数自动重新计算,我们将A列的15个“数值”选择性粘贴到B列。现在可以把A列删除或隐藏,或者重新填充成1~15的序号。
匹配参数
3)选择D2单元格,输入“=match(1.8,B1:B15,0)”,结果显示#N/A,就是搜索无果,没有找到。
4)现在我们把第10个人的数据改成1.80,D2结果为10。再把第6个数据改成1.80,D2结果为6。就是说,现实生活中,我们会把这一队同学从第1个开始依次测量身高,找到一个正好等于1.8的就可以了,后面的不测了,全体解散,完成任务。如果没有找到则退而求其次。
5)现实中,为了效率,我们会让这些人按大小个排成一排,有两种找法。如果要找大于1.8的最接近值,会从大个找起,逐渐接近,直到碰到一个小于1.8的搜索结束,上一个就是要找的人。反之要从小个找起。现在我们把公式的第3个参数改成-1,结果显示#N/A。
降序排列
6)选中B列,单击“数据”选项卡,“排序和筛选”中的“降序”按钮,选择“扩展选定区域”,结果显示为5。大于等于1.8的第一个同学,原来的序号是6,第10个同学落选。
排序错误导致结果错误
7)现在我们把B5单元格的数据改成1.7,D2结果变成4,现在1.87被认为是最接近1.8的最小值,第10个同学还是落选。这是因为我们要求必须按大小个排队,10号同学排在6号同学后面,会被认为10号同学比6号同学矮,所以返回错误结果。
8)需要再按降序重新排列一次就好了,选到10号同学了。
9)现在我们把6号同学数据改回1.8,把数据区按B列升序排列,结果出错。把公式中的第3个参数删掉,结果为11,还是6号同学,与降序的筛选结果一致,没天理呀!这次测量是10号同学先等于1.8的!为什么不停止!此时如果加上第3个参数0,才可以按顺序选到10号同学。按照升序排列,要找到一个超过1.8的才会停止测量呢!
去掉等于1.8的数据
10)把等于1.8的数据全改掉,升序和降序选择的人才会不一样,一个是低于1.8的最大值,一个是高于1.8的最小值。
11)思考一下,查出来的单个行值或列值有什么用?比如,我们一般的表格每列都是不同的数据,将其中的任一列都可当作索引列,查出行号匹配值后,我们就可以构造多个引用,配上列号得到整个一行的其他数据。可以用于查询,但要先排序。
(待续)
本文原作者为陈邓奇,转载请注明:出处!如该文有不妥之处,请联系站长删除,谢谢合作~
原创文章,作者:陈邓奇,如若转载,请注明出处:http://www.kaicen.cn/20220514322212.html