Sort an EXCEL table according to custom segments
An Excel table has three columns:
| 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 | 
We want to sort rows of the table according to different segments of the 3rd column in ascending order. The 1st segment: the 3rd column value≤50; the 2nd segment: 700 < the 3rd column value < 720; the 3rd segment: the other cases (50 < the 3rd column value < 700 or the 3rd column value > 720). Below is the expected result:
| 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 | 
Use SPL XLL to do this:
=spl("=?.enum@n([$[?<=50],$[?>=701 && ?<=720]],~3).conj(~.sort(~3))",A1:C15)

enum()function performs enumerated grouping according to value of the specified string expression; $[] represents a string; @n option enables putting members that do not meet the enumerated conditions in one and separate group. ~ is the current member of a sequence; and ~3 is the 3rd member of a sequence.
Source: https://stackoverflow.com/questions/78140929/excel-vba-custom-sort
SPL Official Website 👉 https://www.esproc.com
SPL Feedback and Help 👉 https://www.reddit.com/r/esProc_Desktop/
SPL Learning Material 👉 https://c.esproc.com
Discord 👉 https://discord.gg/sxd59A8F2W
Youtube 👉 https://www.youtube.com/@esProcDesktop
Linkedin Group 👉 https://www.linkedin.com/groups/14419406/
 
            
        