打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
排序技巧4:按先后顺序把同类项排在一起

按姓名出现的先后顺序将相同姓名的排列在一起

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

比如左表第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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel函数公式数据重新排列的14种公式
其貌不扬的INDEX函数 作用居然这么大
行号跟着数据跑—excel之自动排序
INDEX的8种经典应用,解决Vlookup不能解决的难题!
手把手教你,学会提取不重复值
常用Excel查询套路,你用过几个?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服