我在 Excel 文件中有数据:
Brandon 1
Brandon 10
Brandon 11
Brandon 2
Brandon 3
Brandon 4
John 1
John 2
John 20
John 21
John 22
John 3
John 4
我想先按名称排序,然后按数字排序:
Brandon 1
Brandon 2
Brandon 3
Brandon 4
Brandon 10
Brandon 11
John 1
John 2
John 3
John 4
John 20
John 21
John 22
有什么建议吗?我不想在数字前添加零。
答案1
创建第二个包含数字的列。您可以使用第二个公式来填充该列
如果数字不超过 99
A1:布兰登 1
B1:
=VALUE(RIGHT(A1;2))
否则先找到最后一个空格
- B1:
=VALUE(RIGHT(A1,LEN(A2)-FIND("@",SUBSTITUTE(A2," ","@",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))),1)))
答案2
其中一个选择是:
将列拆分为 2 列。可以使用以下方法完成:
1.1. 数据->文本分列-> ...
1.2. 公式(我的 Excel 是西班牙语的,所以我可能略微忘记了函数的名称)。假设您的数据在 D1 中,名称使用
=LEFT(D1,FIND(" ",D1)-1)
,数字使用=INT(RIGHT(D1,LEN(D1)-FIND(" ",D1)))
或=VALUE(RIGHT(D1,LEN(D1)-FIND(" ",D1)))
。然后复制公式。使用数据->种类和添加级别按这两个标准进行排序。
您可以在执行此操作时录制宏,以通过 VBA 自动执行该过程。您甚至可以通过 VBA 将所有这些压缩为用户定义函数。
答案3
您的问题可以通过使用帮助列来解决:
怎么运行的:
- 我假设名称在
A2:A9
。 输入此公式
C2
并填写。=TEXT(A2,"###")
选择范围
A1:C9
。从主页标签点击种类图标和选择自定义排序。
- 设置排序顺序和其他内容,如下面的屏幕截图所示。
- 完成好的。
您按预期的顺序找到名称。
編輯:
由于 OP 获得了一组新的样本数据,所以我正在进行编辑。
- 可以使用一些辅助列按所需顺序对新数据集进行排序。
输入此公式
B2
并填写。=VALUE(RIGHT(A2,LEN(A2) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, A2&"0123456789")) +1))
写下这个
C2
并填写。
=LEFT(A2,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A2&1234567890))-1)
您将按所需顺序获得新的数据集。
笔记, 稍后您可以隐藏辅助列。