EXCEL 分段排序

Excel某表格有3列。


A B C
1 A1 B1 51
2 A2 B2 721
3 A3 B3 382
4 A4 B4 9
5 A5 B5 73
6 A6 B6 577
7 A7 B7 91
8 A13 B13 150
9 A14 B14 49
10 A17 B17 702
11 A18 B18 705
12 A34 B34 33
13 A35 B35 409
14 A36 B36 579
15 A37 B37 10

现在要求对表格按照第3列进行分段排序,由小到大排列。第1段:第3列小于等于50;第2段:第3列介于700720之间;第3列是其他情况,即第3列大于50并小于700,或大于720


E F G
1 A4 B4 9
2 A37 B37 10
3 A34 B34 33
4 A14 B14 49
5 A17 B17 702
6 A18 B18 705
7 A1 B1 51
8 A5 B5 73
9 A7 B7 91
10 A13 B13 150
11 A3 B3 382
12 A35 B35 409
13 A6 B6 577
14 A36 B36 579
15 A2 B2 721

使用 SPL XLL

=spl("=?.enum@n([$[?<=50],$[?>=701 && ?<=720]],~3).conj(~.sort(~3))",A1:C15)

Picture1png

函数 enum 用于枚举分组,分组依据是字符串表达式,$[] 是字符串标志,@n 表示其他情况单独分一组。~ 表示序列的当前成员,~3 表示序列的第 3 个成员。

来源:https://stackoverflow.com/questions/78140929/excel-vba-custom-sort