2012-08-06 82 views
0

我有一堆沒有特定順序的工作表。爲了加快我的宏,我想按「名稱」(B列)按字母順序排序條目。然而,我的老闆不希望這張表格真正分類 - 天知道爲什麼,但他是老闆。Excel VBA:虛擬地排列工作表?

基本上我想要做的是排序範圍,運行我的宏,然後將其返回到原始順序。但是因爲對於原始訂單沒有「訂單」,我不能簡單地使用不同的排序方法。

我知道快速排序算法,我總是可以將範圍分割爲一個範圍數組,每行一個條目,然後對該數組進行排序。但我想知道是否有更有效的方法?

+1

最簡單的方法是創建工作表副本。完成分類和其他必要的工作並刪除工作表。這樣您的原始表單保持不變。 – 2012-08-06 05:13:02

回答

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 
1

您可以將另一列添加到工作表(永久或暫時),該工作列包含一個排序索引編號(順序排列在工作表中的編號)。一旦你完成了你需要做的事情,對這個額外的列進行排序會使數據恢復原樣。