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)
您可以制作一个表格来分割值:
对于每一列,使用标题(第 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 进行自定义排序。