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列介于700和720之间;第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)
函数 enum 用于枚举分组,分组依据是字符串表达式,$[] 是字符串标志,@n 表示其他情况单独分一组。~ 表示序列的当前成员,~3 表示序列的第 3 个成员。
来源:https://stackoverflow.com/questions/78140929/excel-vba-custom-sort
英文版 https://c.scudata.com/article/1723793361943