Microsoft Excel - Macros - Sort - Sort

An example showing how to sort a worksheet.

' Sorts all queries on all sheets.
' Unfortunately, the SQL sort does not match how Excel sorts the data, and therefore these are resorted per Excel.
Sub Sort_Queries()
 
    Dim lastrow_Test1 As Long
    Dim lastrow_Test2 As Long
 
 
 
    ' Ask user.
'    If ctrl_ask_before_running_subroutine = True Then
'        If MsgBox("Sort all queries?", vbYesNo) = vbNo Then Exit Sub
'    End If
 
 
    ' Update StatusBar.
    Application.StatusBar = "Sorting Queries..."
 
 
    With Workbooks(wb_name)
 
        With .Sheets("Test1")
 
            ' Activates the sheet.
            .Activate
 
 
            ' Update StatusBar.
            Application.StatusBar = "Sorting Queries...on Test1"
 
 
            ' Determine the number of rows.
            lastrow_Test1 = .Cells(Rows.Count, 1).End(xlUp).Row
 
 
            ' Do the sort.
            With .Sort
 
                '.AutoFilter
                With .SortFields
                    .Clear
                    .Add Key:=Range("A1:A" & lastrow_Test1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                End With
 
                .SetRange Range("A1:B" & lastrow_Test1)
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
 
            End With
 
 
            ' Select A1.
            ScrollTo ActiveSheet.name, "A1"
 
        End With
 
 
        With .Sheets("Test2")
 
            ' Activates the sheet.
            .Activate
 
 
            ' Update StatusBar.
            Application.StatusBar = "Sorting Queries...on Test2"
 
 
            ' Determine the number of rows.
            lastrow_Test2 = .Cells(Rows.Count, 1).End(xlUp).Row
 
 
            ' Do the sort.
            With .Sort
 
                '.AutoFilter
                With .SortFields
                    .Clear
                    .Add Key:=Range("A1:A" & lastrow_Test2), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                End With
 
                .SetRange Range("A1:N" & lastrow_Test2)
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
 
            End With
 
 
            ' Select A1.
            ScrollTo ActiveSheet.name, "A1"
 
        End With
 
    End With
End Sub

Sub b_SortData()
  Cells.Select
  ActiveWorkbook.Worksheets("Cleaned Data").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("Cleaned Data").Sort.SortFields.Add2 Key:=range( _
      "B2:B1908"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
      xlSortNormal
  ActiveWorkbook.Worksheets("Cleaned Data").Sort.SortFields.Add2 Key:=range( _
      "D2:D1908"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
      xlSortNormal
  With ActiveWorkbook.Worksheets("Cleaned Data").Sort
      .SetRange range("A1:AF1908")
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
  End With
End Sub