Andrew,
This is the macro I get with the macro recorder.The problem is that the row to R247 change every day.
So to the "last row" in R is much better.
Sub Macro1()
Range("A4:R247").Select
ActiveWorkbook.Worksheets("Data").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Data").Sort.SortFields.Add Key:=Range _
("D4:D247"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Data").Sort
.SetRange Range("A4:R247")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub