2016-08-02 138 views
-1

我想按從小到大的順序排列列A到S中的每行數據,總計5580行。向前邁進,行數會增加。Excel VBA對多行進行排序

我試圖記錄第2行的排序操作。然後,我嘗試將代碼合併爲從第1行到第39行作爲審判,但失敗。

Sub Macro4() 

Macro4 Macro 

Rows("13:39").Select 

ActiveWorkbook.Worksheets("Sheet1 (2)").Sort.SortFields.Clear 

ActiveWorkbook.Worksheets("Sheet1 (2)").Sort.SortFields.Add Key:=Range(_ 
    "A13:S39"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 

With ActiveWorkbook.Worksheets("Sheet1 (2)").Sort 
    .SetRange Range("A13:S" & Range("A" & Rows.Count).End(xlUp).Row) 
    .Header = xlGuess 
    .MatchCase = False 
    .Orientation = xlLeftToRight 
    .SortMethod = xlPinYin 
    .Apply 

End With 

Rows("14:14").Select 
ActiveWorkbook.Worksheets("Sheet1 (2)").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Sheet1 (2)").Sort.SortFields.Add Key:=Range(_ 
    "A14:S14"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 
With ActiveWorkbook.Worksheets("Sheet1 (2)").Sort 
    .SetRange Range("A14:S14") 
    .Header = xlGuess 
    .MatchCase = False 
    .Orientation = xlLeftToRight 
    .SortMethod = xlPinYin 
    .Apply 
    End With 
End Sub 

回答

0

像這樣的事情是去我覺得

For Each rw In Range("a1:E3").Rows 

    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(rw.Address), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet1").Sort 
     .SetRange Range(rw.Address) 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlLeftToRight 
     .SortMethod = xlPinYin 
     .Apply 
    End With 

Next rw 
+0

由於彌敦道的方式,但它不工作...我是否需要修改類似「rw.Address」? – Yennie

+0

你試過什麼代碼? –