我有一堆沒有特定順序的工作表。爲了加快我的宏,我想按「名稱」(B列)按字母順序排序條目。然而,我的老闆不希望這張表格真正分類 - 天知道爲什麼,但他是老闆。Excel VBA:虛擬地排列工作表?
基本上我想要做的是排序範圍,運行我的宏,然後將其返回到原始順序。但是因爲對於原始訂單沒有「訂單」,我不能簡單地使用不同的排序方法。
我知道快速排序算法,我總是可以將範圍分割爲一個範圍數組,每行一個條目,然後對該數組進行排序。但我想知道是否有更有效的方法?
我有一堆沒有特定順序的工作表。爲了加快我的宏,我想按「名稱」(B列)按字母順序排序條目。然而,我的老闆不希望這張表格真正分類 - 天知道爲什麼,但他是老闆。Excel VBA:虛擬地排列工作表?
基本上我想要做的是排序範圍,運行我的宏,然後將其返回到原始順序。但是因爲對於原始訂單沒有「訂單」,我不能簡單地使用不同的排序方法。
我知道快速排序算法,我總是可以將範圍分割爲一個範圍數組,每行一個條目,然後對該數組進行排序。但我想知道是否有更有效的方法?
除了我的評論,這裏是一個例子,保持你的原始表單不變。
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
您可以將另一列添加到工作表(永久或暫時),該工作列包含一個排序索引編號(順序排列在工作表中的編號)。一旦你完成了你需要做的事情,對這個額外的列進行排序會使數據恢復原樣。
最簡單的方法是創建工作表副本。完成分類和其他必要的工作並刪除工作表。這樣您的原始表單保持不變。 – 2012-08-06 05:13:02