2016-08-02 294 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

你试过什么代码? –