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 的单元格和中心?