我有一个没有特定顺序的一堆行的工作表。为了加快我的宏,我想按字母顺序对条目进行排序" Name" (B栏)。但是,我的老板并不希望这张纸真正排序 - 上帝知道为什么,但他是老板。
基本上我想做的是对范围进行排序,运行我的宏,然后将其返回到原始顺序。但是因为没有"顺序"对于原始订单,我不能简单地使用不同的排序方法。
我知道快速排序算法,我总是可以将范围拆分为范围数组,每行一个条目,然后对该数组进行排序。但我想知道是否有更有效的方法?
答案 0 :(得分:1)
您可以在工作表中添加另一列(永久或临时),该列包含排序索引编号(在工作表中按顺序编号)。完成所需操作后,对这个额外列进行排序将使数据恢复原状。
答案 1 :(得分:1)
除了我的评论之外,还有一个示例可以保持原始图纸不受影响。
Sub Sample()
Dim ws As Worksheet
Set ws = Sheets("Sheet1").Copy(Before:=Sheets(1))
With ws
.Columns("B:B").Sort key1:=.Range("B1"), order1:=xlAscending
'
'~~> Do your stuff
'
End With
'~~> Delete sheet once you are done.
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
Set ws = Nothing
End Sub