如何在 Excel 中对列表样式的数字进行排序?

Nic*_*ick 5 sorting microsoft-excel microsoft-excel-2010

我在 Excel 中有一个“数字”列,我想按如下方式排序:

1.1
1.2
1.2.1
1.2.6
1.2.9
1.2.10
1.2.11
1.3
Run Code Online (Sandbox Code Playgroud)

但是,无论单元格的类型是数字还是文本,Excel 都会按如下方式对它们进行排序:

1.1
1.2
1.2.1
1.2.10
1.2.11
1.2.6
1.2.9
1.3
Run Code Online (Sandbox Code Playgroud)

这也可以称为“自然排序”——在像 PHP 这样的编程语言中,这将由natsort 函数来完成。但我似乎无法找到一种在 Excel 中以这种方式排序的方法。

帮助进一步提供一些上下文:这些数字代表部分和子部分——不是小数,而是作为列表项:

1. Section
    1. Sub-section
    2. Sub-section
        1.  Item
        6.  Item
        9.  Item
        10. Item
        11. Item
    3. Sub-section
Run Code Online (Sandbox Code Playgroud)

Han*_*ood 1

您可以制作一个表格来分割值:

对于每一列,使用标题(第 1 行)和公式(第 2 行以上):

A1: text    A2: (your section numbers)
B1: dot1    B2: =FIND(".",A2,1)  
C1: dot2    C2: =IFERROR(FIND(".",A2,B2+1),LEN(A2)+1)  
D1: num1    D2: =VALUE(MID(A2,1,B2-1))  
E1: num2    E2: =IFERROR(VALUE(MID(A2,B2+1,C2-B2-1)),0)  
F1: num3    F2: =IFERROR(VALUE(MID(A2,C2+1,LEN(A2)-C2)),0)  
Run Code Online (Sandbox Code Playgroud)

这显示为:

      A      B      C      D      E      F

1   text   dot1   dot2   num1   num2   num3
2   1.1       2      4      1      1      0
3   1.1.3     2      4      1      1      3
4   2.10.7    2      5      2     10      7
Run Code Online (Sandbox Code Playgroud)

然后您可以按列 num1、num2 和 num3 进行自定义排序。