Excel:如何像数据透视表一样对一系列带有前导零的数字进行排序?

Posted

技术标签:

【中文标题】Excel:如何像数据透视表一样对一系列带有前导零的数字进行排序?【英文标题】:Excel: How can I sort a range of numbers with leading zeros as a pivot table does? 【发布时间】:2019-05-17 15:53:28 【问题描述】:

我需要对工作表上的一系列数字进行排序,以匹配数据透视表中第二组非常相似的数据所做的排序。这些数字是字符串格式,因为其中一些以 0、00 等开头。

删除前导零不是一种选择,因为这会重复条目(例如,我有 056 和 0056)。

字符串的长度不同,不仅仅是因为前导零。

默认情况下,数据透视表是这样排序的(似乎只将数字排序为字符串):

基本上我需要这样的顺序:

00056
00182
01097
100
106
10610
109
86930
870032
87035
...

我尝试过的事情:

    在工作表上将任何看起来像数字的东西作为数字进行排序; 分别对数字和文本进行排序; 按自定义列表排序,其中自定义列表是数据透视表中的数据集。

您似乎不能强制 Excel 将一系列数字单独排序为字符串,而数据透视表似乎没有问题。

我宁愿不必同时旋转第一组数据,我只需像透视表一样对其进行排序!

有什么想法吗?

提前致谢,

附:我真的只是在寻找这个问题的答案,而不是解决不同问题或关于我为什么要首先这样做的问题,谢谢!

【问题讨论】:

你的意思是 range.sort 使用 xlSortTextasNumbers 吗?它不起作用。 【参考方案1】:

插入一个新列并将尾随零填充到所有值的相同长度。以该列作为主键进行排序,然后删除该列。

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

【讨论】:

完美!这非常有效。希望我能想到。非常感谢您的帮助:)

以上是关于Excel:如何像数据透视表一样对一系列带有前导零的数字进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以像在 Excel 中一样合并数据透视表列 OBIEE 12c 的单元格和中心?

使用c#导入excel文档时如何防止前导零被剥离

使用 EP Plus 允许在工作表上使用前导零

Python:在 python 中重现嵌套的 Excel 数据透视表

零基础小白也能学会的数据分析工具,比Excel还简单

导出为 CSV 时,如何在列中保留前导零?