使用宏对预定字段进行排序

时间:2015-04-30 12:24:50

标签: excel vba sorting excel-vba

我想根据五个参数对表格进行排序。 我有以下专栏:

  • 姓名TX
  • 名称RX
  • 数据
  • Zeitraster
  • Richtung
  • Botschaftzahl
  • LSB职位
  • große
  • Coef中
  • 最小
  • 最高

按此顺序排序:

  1. 数据
  2. Zeitraster
  3. Botschaftzahl
  4. Richtung
  5. LSB职位

2 个答案:

答案 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....

最简单的方法实际上是记录它,一切都应该变得清晰。