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 个成员。