分享

【Excel公式教程】MATCH的妙用,这个思路是真的妙!

 Excel学习园地 2023-07-06 发布于甘肃


在我们的做题群有这样一道题目,提取每位同学的最好成绩。

针对这个题目,群里的各路神仙大显神通,给出了很多种解法,其中有一个公式是这样的:

=MATCH(,-FIND(ROW(A:A),B2))

看懂这个公式的可以留言冒个泡先,因为这个思路是真的妙……

如果看不明白其中的奥妙,那就接着往下看,咱们一步一步来解释其中的玄妙!

公式=MATCH(,-FIND(ROW(A:A),B2))中,首先要搞清楚FIND在这里干了个啥,本来FIND是一个查找字符的函数,基础用法大家也不陌生,FIND(要找的内容,在哪找,从第几个字开始找),但是在FIND(ROW(A:A),B2)中,要找的内容不是一个,而是很多个,具体就是1到1048576,也就是ROW(A:A)代表的内容。

其实要不了这么多,1到150足矣,因为单科成绩的满分也就150。

所以咱们先把公式还原一波,将FIND这部分还原为=FIND(ROW(1:150),B2,1)

结合365自带的扩展功能看下效果。

乍一看能吓一跳,是不是还原错了啊?

再把MATCH加上看看。

结果是对的,所以还得先把FIND搞清楚。

咱们还是看这个图,返回的明显是一组数(因为查找值就是一组而不是一个),结果中包含了数字(4、12、25等等)还有就是错误值,咋理解这个结果呢?

为了便于理解原理,我在E列备注了一下查找值,其实就是ROW(1:150)所对应的值。

先来看第一个4是啥意思,查找值是1,在B4找,很明显有的,结果4表示B4里有1这个数字,并且在第四个字符。

同理,B4也有2这个数字,在第12个字符;也有10这个数字,在第四个字符;也有20这个数字,在第12个字符……

所以B4里每个分数所对应的数字都能找到,并且有对应的位置。

但是这个位置又不是我们需要的,我们需要的是分数,感觉刚明白一点又开始晕乎了……

好吧,再深入解释一下,请看这个图……

直接FIND99~120之间的数字,公式得到了三个数字,结果分别是25、4和11,如果你懂了前面一段的描述,这一段应该也不会蒙圈的。

但是,请注意,我们的目标并不是要find的结果,而是要find的结果中的每个数字右侧的那个数,也就是99,100,120。

请注意,这三个数字所代表的分数都是在数据源中存在的,并且是顺序递增的,这很重要,因为这就相当于排序了(二分法或者说是模糊匹配的潜规则要求排序哦)……

明白了这一点,就可以理解其实找最大的分数就是找最后一个数字所在的位置,而找位置正好是MATCH的拿手好戏。

MATCH的格式:MATCH(要找的内容,在哪找,怎么找)。

公式=MATCH(,-FIND(ROW(A:A),B2))中直接省略了两个参数,只给了一个查找范围,也就是FIND得到的那一列数字+错误值。

省略第一参数表示要找的是0,省略最后一个参数表示查找最大值。

FIND前面的-就是负号的意思,将结果里的数字全变成负数,这样就保证了没有比0大的数字,从而得到最后一个数字对应的顺序号,也就是分数。

最后再来梳理一下这个奇妙的思路:

首先用FIND得到一系列行号(自然数序列)在单元格里的位置,再添加负号将结果变成负数,最后用MATCH匹配出最后一个数字所在的位置。亮点是这个位置正好就是最大的那个分数。

懂的自然就懂了,不懂的再多多修炼吧……

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多