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
...

我尝试过的事情:

  1. 对 sheet 任何看起来像数字的东西进行排序;
  2. 分别对数字和文本进行排序;
  3. 按自定义列表排序,其中自定义列表是数据透视表中的数据集 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