Заголовок в примере состоит из двух строк.И Header:=xlYes
ожидает, что только первая строка будет заголовком, поэтому вторая строка берется как часть значений для сортировки.
Чтобы исправить это, используйте Range("C1:E" & lastRow5).Sort key1:=Range("E2"), order1:=xlAscending, Header:=xlYes
, который принимает lastRow изпятый столбец ActiveSheet
с lastRow(ActiveSheet.Name, 5)
.
Весь раствор:
Sub TestMe()
Dim lastRow5 As Long
lastRow5 = lastRow(ActiveSheet.Name, 5)
Range("C1:E" & lastRow5).Sort key1:=Range("E2"), order1:=xlAscending, Header:=xlYes
End Sub
Function lastRow(wsName As String, Optional columnToCheck As Long = 1) As Long
Dim ws As Worksheet
Set ws = Worksheets(wsName)
lastRow = ws.Cells(ws.Rows.Count, columnToCheck).End(xlUp).Row
End Function