I did not 'move up' the Grand Total row because the summary should remain at the bottom. To get it to move up, use this, which just removes the -1 from the .SetRange line:
Sub TestMacro2()
ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("1:2").Find("Grand Total").Offset(2) _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.ActiveSheet.Sort
.SetRange Intersect(Range("2:" & Cells(Rows.Count, "A").End(xlUp).Row), Range("A3").CurrentRegion)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
End Sub
As a side note - merged cells and multiple rows of headers are things you should avoid in your workbook design.
Bookmarks