相信大家在Excel使用过程中肯定遇到过这种需求,就是想让一组数据按照给定的顺序来进行排序,而不是简单地按升降序来排列。今天我就在工作中再次遇到这个问题,也算是之前困扰已久的一个点,所以想着必须解决不能再拖了。经过一番Google和尝试,终于算是完美解决了,在这里分享给大家。
1. 问题描述
首选说明一下什么情况下会遇到这种需求,比如现在有一组学生的成绩,列表如下:
但是在其他文档中名字的排序可能是像下图右边D列这样顺序的:
那么问题来了,如果你想直接把成绩数据粘贴到其他文档或列表中,就得让现有数据按照给定顺序排序,那么该怎么做呢?
2. 解决办法
(1) 自定义排序
如果数据量不算很大,但是手动排序又相对麻烦,那么可以直接通过“自定义排序”的方法。先把要排列的数据列表选中,右键/菜单栏里选-排序-自定义排序,如下:
然后选“自定义序列”,来到添加序列的对话框:
然后把你想要的排序方式粘贴到里面,添加-确定,然后数据就可以按照给定的顺序排序了。
但是实际使用有个问题就是Excel2007以后的版本已经限制了此处添加的字节数目(不超过255),所以如果数据量很大,添加时会提示仅保留前255个字节(注意是字节不是字数哦),那就没什么卵用了。
所以对于要排的数据量很大的话,就要采用下面说的第二种方法了。
(2) 采用EXCEL的match函数
Excel其实提供了很多实用的函数。要解决上述的排序问题,可以借助其中的Match函数。
Match函数的功能
match函数可以在给定的数据组中查找特定数据,然后返回该数据的编号(也就是第几个值),什么意思呢,举个例子就清楚了。
比如说我要在D列中查找王花花是第几个,我就可以在C列用match来实现,返回的是数字3,那么也就是说王花花是该列中的第三个,没问题。
Match函数怎么用
在单元格中输入=MATCH(),看提示就知道它有三个需要你给定的参数,首先是查找值,比如你要查找王花花,那么就在A列中选中A2(王花花)单元格,然后逗号,再输入查找区域,也就是选中D列中的数据(D2:D6),然后再逗号,输入0(对应最后一项匹配类型,0表示精确匹配),函数就写完啦,回车就会得到返回值,也就是上面提到的王花花对应的是3。然后呢,要得到A列中所有数据在D列中的编号的话怎么办呢?很多同学可能知道,Excel里面直接拖下来就完了,但是实际情况我们知道,直接把C列编号往下一拉的话,对应的“查找区域这一列”是会下移的。所以在往下拉之前需要修改Match函数中的“查找区域”为绝对区域,很简单,像下面这样在前面加上“$”即可:
然后再把单元格往下一拉,哎~都有了:
再次自定义排序
看到上面相信很多同学已经知道接下来该怎么做了,既然我们知道了左边那组数据在右边给定列中是第几个数(编号项),那么我们直接按编号排序就完了。没错,直接选中A-C列的数据,选排序-自定义排序-升序-关键词选”编号“,哒哒~得到结果:
结语
到这里整个排序问题就解决了。给我的一个感觉就是,很多时候你对数据处理的需求,可能看起来很复杂,只能靠人工来完成,但是其实Excel都可以替你实现,只是你暂时不知道怎么做而已,这就是Excel的强大之处。所以下次遇到感觉很繁杂Excel数据处理需求时,如果觉得手动操作太麻烦了,不妨先去Google一下是否可以有便捷的方法来完成。往往会惊天大呼:“太神奇了!太神奇了~~”(是我没错了……)
以上,感谢大家的阅读,希望有帮到你哦~