Excel:如何像主元 table 一样对带前导零的数字范围进行排序?
Excel: How can I sort a range of numbers with leading zeros as a pivot table does?
我需要对 sheet 上的一系列数字进行排序,以匹配主元 table 中第二组非常相似的数据所做的排序。这些数字是字符串格式,因为其中一些数字以 0、00 等开头。
删除前导零不是一个选项,因为这会重复条目(例如,我有 056 和 0056)。
字符串的长度不同,不仅仅是因为前导零。
主元 table 默认情况下这样排序(它似乎只将数字排序为字符串):
基本上我需要这样的顺序:
00056
00182
01097
100
106
10610
109
86930
870032
87035
...
我尝试过的事情:
- 对 sheet 任何看起来像数字的东西进行排序;
- 分别对数字和文本进行排序;
- 按自定义列表排序,其中自定义列表是数据透视表中的数据集 table。
似乎您不能强制 Excel 将一系列数字仅作为字符串进行排序,因为它看起来像一个 pivot table 这样做没有问题。
我宁愿不必也对第一组数据进行透视,只是将其排序为透视 table!
有什么想法吗?
提前致谢,
P.S。我真的只是在寻找这个问题的答案,而不是不同问题的解决方案或关于我为什么要这样做的问题,谢谢!
插入一个新列并将尾随零填充到所有值的相同长度。将该列作为主键进行排序,然后删除该列。
Option Explicit
Sub funnySort()
With Worksheets("sheet2")
.Columns("A").Insert
.Range(.Cells(2, "A"), .Cells(.Rows.Count, "B").End(xlUp).Offset(0, -1)).Formula = _
"=LEFT(B2&REPT(0, 9), 10)"
With .Range(.Cells(1, "A"), .Cells(.Rows.Count, "B").End(xlUp))
.Sort Key1:=.Cells(1), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
End With
.Columns("A").Delete
End With
End Sub
我需要对 sheet 上的一系列数字进行排序,以匹配主元 table 中第二组非常相似的数据所做的排序。这些数字是字符串格式,因为其中一些数字以 0、00 等开头。
删除前导零不是一个选项,因为这会重复条目(例如,我有 056 和 0056)。
字符串的长度不同,不仅仅是因为前导零。
主元 table 默认情况下这样排序(它似乎只将数字排序为字符串):
基本上我需要这样的顺序:
00056
00182
01097
100
106
10610
109
86930
870032
87035
...
我尝试过的事情:
- 对 sheet 任何看起来像数字的东西进行排序;
- 分别对数字和文本进行排序;
- 按自定义列表排序,其中自定义列表是数据透视表中的数据集 table。
似乎您不能强制 Excel 将一系列数字仅作为字符串进行排序,因为它看起来像一个 pivot table 这样做没有问题。
我宁愿不必也对第一组数据进行透视,只是将其排序为透视 table!
有什么想法吗?
提前致谢,
P.S。我真的只是在寻找这个问题的答案,而不是不同问题的解决方案或关于我为什么要这样做的问题,谢谢!
插入一个新列并将尾随零填充到所有值的相同长度。将该列作为主键进行排序,然后删除该列。
Option Explicit
Sub funnySort()
With Worksheets("sheet2")
.Columns("A").Insert
.Range(.Cells(2, "A"), .Cells(.Rows.Count, "B").End(xlUp).Offset(0, -1)).Formula = _
"=LEFT(B2&REPT(0, 9), 10)"
With .Range(.Cells(1, "A"), .Cells(.Rows.Count, "B").End(xlUp))
.Sort Key1:=.Cells(1), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
End With
.Columns("A").Delete
End With
End Sub