Excel宏可对选择的多个列进行排序

时间:2017-09-08 20:44:56

标签: excel excel-vba vba

我希望宏按所选范围的相同两列进行排序。 (B栏和H栏)

VBA中的范围可能仅限于A1到H40,但如果行数不同,我希望代码显示范围A到H.

还必须在所有A到H列上进行排序,而不是B1到B40和H1到H40。

2 个答案:

答案 0 :(得分:0)

如果您要将A列排序为H,则可以使用以下

Columns("A:H").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B:B"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("H:H"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
    .SetRange Range("A:H")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

您需要做的就是在运行宏时记录宏并删除行号,例如Range(“B2:B20”)到Range(“B:B”)

答案 1 :(得分:0)

`   
ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("H:H") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("J:J") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.ActiveSheet.Sort
.SetRange Selection
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
`