[Excel VBA]自定义排序的三种方法

诸君好,前前期我们聊了VBA编程和数据的常规排序……VBA常用小代码105:Rang对象的排序操作……
今天我们再聊下自定义排序……
何谓自定义排序,就是按指定的顺序对数据源进行排序呗……

今一共分享了三种方法。
第1种方法是系统自带的OrderCustom,优点是代码简洁,缺点是自定义序列有字符长度限制(255个)。
第2种方法是字典+数组设置序列号,再使用了辅助列进行排序。优点是不会破坏单元格的形式和结构,比如单元格中存在的公式、背景等。
第3种方法是只使用字典+数组,借助简单桶排序的技巧,直接对数据在数组中进行排序。优点是效率较高,缺点是会破坏单元格的结构,比如消除公式等。
(第1种建议掌握,第2种建议了解,第3种……能懂就懂,不懂先放着吧~)

举个例子。
如下图所示,A:C列是数据源。
现需要根据E列所指定的部门先后顺序,对数据源进行重新排序,如果部门不在指定序列内,则排放在数据源末尾。
[Excel VBA]自定义排序的三种方法_第1张图片
排序结果如下图。
[Excel VBA]自定义排序的三种方法_第2张图片

第1种方法代码如下:

Sub FreeSort()
'eh技术论坛 VBA编程学习与实践 看见星

你可能感兴趣的:([Excel VBA]自定义排序的三种方法)