我有一个工作表,其中包含一堆没有特定顺序的行。为了加快我的宏,我想按“名称”(B 列)的字母顺序对条目进行排序。然而,我的老板不希望这张单子真正排序——天知道为什么,但他是老板。
基本上我想做的是对范围进行排序,运行我的宏,然后将其返回到原始顺序。但是因为原来的顺序没有“顺序”,我不能简单地使用不同的排序方法。
我知道快速排序算法,我总是可以将范围拆分为一个范围数组,每行一个条目,然后对该数组进行排序。但我想知道是否有更有效的方法?
您可以在工作表中添加另一列(永久或临时),其中包含一个排序索引号(在工作表中按顺序排列的数字)。一旦你完成了你需要做的事情,对这个额外的列进行排序将使数据恢复原样。
除了我的评论,这里有一个例子,它可以让你的原始工作表保持不变。
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