我想根据五个参数对表格进行排序。 我有以下专栏:
按此顺序排序:
答案 0 :(得分:1)
VBA只允许三个键在任何一个进程中进行排序。如果需要三个以上的密钥,则先对最后一个密钥进行排序,然后再返回三个最主要的密钥。
Sub custom_sort()
Dim vKEYs As Variant
vKEYs = Array("Data", "Zeitraster", "Botschaftzahl", "Richtung", "LSB Position")
With ActiveSheet
With .Cells(1, 1).CurrentRegion
.Cells.Sort Key1:=.Columns(Application.Match(vKEYs(3), .Rows(1), 0)), Order1:=xlAscending, _
Key2:=.Columns(Application.Match(vKEYs(4), .Rows(1), 0)), Order2:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
.Cells.Sort Key1:=.Columns(Application.Match(vKEYs(0), .Rows(1), 0)), Order1:=xlAscending, _
Key2:=.Columns(Application.Match(vKEYs(1), .Rows(1), 0)), Order2:=xlAscending, _
Key3:=.Columns(Application.Match(vKEYs(2), .Rows(1), 0)), Order3:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
End With
End With
End Sub
使用从A1开始的数据块。它使用标题行中的application.Match
来获取每个排序键列的位置。
答案 1 :(得分:0)
您可以使用Data => Sort这将打开一个对话框,允许您这样做。 在VBA中,您可以调用Sort函数。
ActiveWorkbook.Worksheets("Sheet1").Sort....
最简单的方法实际上是记录它,一切都应该变得清晰。