好久不见。
最近一直在处理数据,偶然之下,我发现了一种不寻常的多条件排序方法,当然这不属于官方直接提供的功能,而这种方法操作起来不难,只是一开始可能会不太习惯,不过习惯后,操作可以比官方功能更快捷,而且可以轻松应用到移动端 APP 的使用。
目前微软、WPS 或 Apple 的移动端表格处理 APP 均没有实现多条件排序的功能,有的只是简单的对单条件排序,而这个方法在这三方均是可以实现的,这将是一个很好的辅助手段。
①
自定义排序
Excel 中,要根据多个条件进行排序,用自带的【自定义排序】功能就可以实现了。
以 Excel 2016 为例,先鼠标点击表格内一非空单元格,通过 开始》排序和筛选》自定义排序,打开【排序】对话框,选择好相应的条件,也就是列关键字,并调整好排序依据和次序,即可进行排序。
用这种操作的习惯一般是,先选好主要条件(即主要关键字),再选择次要条件(即次要关键字)。
多条件排序是处理数据中很常见的一个操作,很多时候都会用得上。如上操作并没有什么问题,只是接下来的方法,恐怕要刷新你的认知了。
②
两次单列排序
在过去一个来月的日子里,我每天都要处理数据,每天的数据不算特别多,数据的框架也基本不变,只是每天会有新的数据出现。
在我习惯了前期的处理手法后,我开始探求更便捷的操作,偶然之下,就让我注意到,实现多条件排序的一个另类的方法——
分别根据两个条件列数据进行排序
这样叠加在一起的效果就是多条件排序了。
哈哈,你没看错,就是通过普通的单条件排序,来实现多条件排序的结果。
这真的能实现吗?
嗯,没错,经测试,确实可以。
下面,我来进行说明吧。
1. 对次要条件列进行排序
这个方法的第一步就是:
先对次要条件列数据进行排序
(在我处理数据的时候,恰好是要先独立对次要条件列进行排序,于是我就发现了这个小技巧)
先对次要条件排序,这与自定义排序的习惯不一样,这就是一开始不习惯的地方,但有意识地去适应,你就会发现这是一种方便、炫酷(zhuang bi)的操作了。
2. 对主要条件列进行排序
第二步就是:
对主要条件列的数据进行排序
第二步也是简单的单列排序,但就是这样简单的操作造就了按多列排序的效果。
当然这是基于只有两个条件的情况而言,如果有更多的条件,那就对第一步的最次要条件的上一位条件列数据进行排序,一直到最后,才对主要条件列进行排序。
所以,这个方法排序操作的顺序是:
先次要,再主要
先次要,再主要
先次要,再主要
说三次大概能加深你的印象了。
这其实就是这个方法的关键了。
那么为什么是这样的操作呢?
接下来进行解释。
(能看懂也行,看不懂就照做)
首先,经过第一步,次要条件的一列已经排好序了,这点都可以理解吧;
接着,第二步仅对主要条件一列进行排序,那么 结果一定首先倾向于主要条件(从普通的单列排序角度去看就好),保证主要条件列是不会错的;
最后,次要条件列,虽然由于主要条件列的重新排序,而导致变乱序了,但 主要条件相同值对应的次要条件列的数据,则还是会按照先前的顺序进行排列的,而不会使之也乱序。
这样分析的话,就相当于实现了多条件排序的效果了。
看到这里,你可能有点懵逼,可能没看懂,特别是最后一点。不用怕,后面我会举例子说明的。
不过,这里,我还得为看懂的小伙伴做进一步的解释。
凭什么我会认为:
主要条件相同值对应的次要条件列的数据不会重新排序,而是一定按照先前的顺序排列着呢?
其实一开始我只是猜想,只是一味地这样认为,经测试却发现符合猜想,而且接下来我每天继续处理的数据都没有出现问题,基本可以认为这种做法是可行的。
当然测试是无法穷尽所有可能的,而我个人认为是没有问题的,所以同意这一做法的,尽管可以去操作。
那么为什么会这么想呢?
很简单,基于算法的优越性。
我曾经对编程有点接触,排序的算法是一个很基础的内容,排序就是一个又一个数值位置的交换,直到最后排好序,而可以实现排序的算法很多。实际上,一般,计算机运算步骤越少,计算越快,人们追求的当然是日益高效,而不是冗余的步骤。
回到上面说到的,对于已经根据次要条件排好序的数据,对应的主要条件的值相同的部分,根本可以不必交换顺序了,这样做已经是多余的步骤了。
一个优秀的算法,应该还是要避免这样的情况发生的,这一点点操作对现在强大的计算机而言似乎没什么影响,但当处理的数据足够多,影响就会变得显著。
虽然我是想这么说的,但是,这其实还得看具体的算法是什么,有的算法确实可能会发生看上去不必要的位置互换的情况,但不一定就是低效。而事实上,我无法得知 Excel 里具体用的什么算法。
恰巧的是,经过了测试,发现我的想法是可实行的。
说了那么多,归根到底就是:
基于少许的经验,对存在的可能性,进行了尝试,尔后,确认了可能性。
③
辅助小技巧
方法是有了,但要让这个方法达到更高的效率,需要再利用Excel的一个小技巧——【把常用命令添加到快速访问工具栏】。
这个操作非常简单,而且一劳永逸,添加后,某些命令可以更快捷地使用。
这里我需要把【升序】和【降序】这两个命令添加进去。点开【排序和筛选】,分别右键点击【升序】和【降序】,选择【添加到快速访问工具栏】即可。这样就可以在工具栏看到相应的图标了。
④
举个例子
如下作一简单的例子。
数据:一列是水果名,包括苹果、香蕉、橙子、水蜜桃、西瓜、柚子,部分水果有多次数据;一列是相应水果的数量。
排序:以水果名为主要关键字,数量列为次要关键字,进行多条件排序,均按升序排序。
表格:左侧表格是利用两次单列排序方法测试数据,右侧表格是利用Excel自带的【自定义排序】功能进行排序的的结果。
随机数列:用于生成随机数的序列,其作用是打乱左侧表格;每次通过排序打乱后,由于随机数会重新生成,所以可以多次打乱。
匹配结果:,当【自定义排序】与【两次单列排序】同一行水果名及数量完全一致时,显示为【√】,其他情况显示为【×】。
操作:
① 打乱左侧表格
鼠标定位到随机数列任一随机数上,点击快速工具栏上的升序按钮进行快速排序。
(一个小技巧:鼠标不要直接选择整列数据,不然会弹出【排序提醒】对话框,这样就慢了,如下)
② 两次单列排序
先后对【数量】列和【水果】列进行升序排序,操作如上。
(整个测试过程)
可见,两种操作获取的结果是一致的,多次尝试也无异常。
不考虑随机数打乱顺序,仅【四次点击】,就完成了排序,有没有酷酷的感觉呢?以此类推,多一列条件,就多两次点击,这要比自定义排序节省一点操作。
在【WPS office】上同样可以用这种方法,但是 WPS 目前的快速访问工具栏还不允许添加升序或降序命令,所以提速不明显。
不过,在移动端,不管是 Microsoft Excel,还是 WPS Office,或是苹果的 Numbers,经测试,这都是一个可应用的方法。所以,以后,即便只有手机,也能做到更多的事情。
附:这里有个注意的地方,如果手机设置语言为英文,那么 Excel 排序的时候,会出现奇怪的结果。想要恢复正常,需要把语言调回中文。
⑤
总结
多条件排序是一个很常见的需求,【自定义排序】是基本的做法;
分别对单列进行排序,可以实现多条件排序的效果;
通过快速访问工具栏可以更好地体现这种方法的优势;
最后一个水果数据的例子。
小斌感谢您的阅读
希望本文对您有所帮助