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