分享

【MATCH函数练习】按先后顺序把同类项排列在一起!

 刘卓学EXCEL 2021-12-25
你好,我是刘卓。欢迎来到我的公号,excel函数解析。昨天分享了match函数的用法和特点,今天就来一起做个match函数的练习:按出现先后顺序把同类项排在一起。
-01-
具体应用

下图左表记录的是各位考生的多次考试成绩,现需要根据左表姓名的先后顺序将相同姓名的排列在一起,结果如右表所示。

比如左表第1个姓名是“徐娥芝”,那么先将徐娥芝的所有考试记录排在一起;然后将第2个姓名吴云芝的所有考试记录排在一起,···,依此类推。

题目要求你应该明白了,先自己想下怎么做?再往下看。

方法是:在E3单元格输入下面的公式,按ctrl+shift+enter三键,向右向下填充。

=INDEX(A:A,RIGHT(SMALL(MATCH($B$3:$B$16,$B$3:$B$16,)/1%+ROW($3:$16),ROW()-2),2))


MATCH($B$3:$B$16,$B$3:$B$16,)这部分用match函数查找所有的姓名在B3:B16这个区域中第一次出现的位置,返回的结果为{1;2;3;2;2;3;1;8;9;9;8;2;9;1},如下图E列所示。

由于match返回第一次出现的位置,所以相同姓名返回的位置是一样的,如上图红框所示,两个“叶福俊”返回的位置都是3。也就是用match函数将相同的姓名变为相同的数字,并且这些数字是第一次出现的位置。
MATCH($B$3:$B$16,$B$3:$B$16,)/1%+ROW($3:$16)这部分用上一步match的结果乘以100,再加上对应的行号,返回的结果如下图F列所示。

可以看到徐娥对应的3个数分别是103,109,116。下一步用small函数从小到大提取时,肯定先提取这3个数;然后再提取以2开头的数204,206,207,214,···,这样就把相同姓名对应的数字排在一起了。

SMALL(MATCH($B$3:$B$16,$B$3:$B$16,)/1%+ROW($3:$16),ROW()-2)这部分用small函数将加权处理后的数字升序排序,返回的结果如下图G列所示。

RIGHT(SMALL(MATCH($B$3:$B$16,$B$3:$B$16,)/1%+ROW($3:$16),ROW()-2),2)这部分用right函数从上一步的结果中截取右边的2位数,得到对应的行号,结果如下图H列所示。

行号得到了,最后用index函数返回相应行列交叉的内容就可以了。最主要的还是利用match函数将相同姓名变为相同数字的特点,以及加权的方法。

文件链接:

https://pan.baidu.com/s/16dwKt2xrbBvjtLrjDvGZXA

提取码:5acw
学函同学,可以购买我的《函数基础课程》,不要答疑只需39元,要答疑99元。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多