Poniższy kod doskonale sortuje, jeżeli nagłówkiem jest jeden wiersz. Jak go przerobić, kiedy nagłówkiem są dwa wiersze, a chcę posortować od trzeciego?
ActiveSheet.Range("A3").CurrentRegion.Sort Key1:=ActiveSheet.Range("A3"), Header:=xlYes
Poniższy kod doskonale sortuje, jeżeli nagłówkiem jest jeden wiersz. Jak go przerobić, kiedy nagłówkiem są dwa wiersze, a chcę posortować od trzeciego?
ActiveSheet.Range("A3").CurrentRegion.Sort Key1:=ActiveSheet.Range("A3"), Header:=xlYes
Może tak (założenie - nagłówek to wiersze 3 i 4, dane zaczynają się od 5, sortujemy względem kolumny A):
Range("A5", Range("A5").End(xlToRight).End(xlDown)).Sort Key1:=Range("A5"), Header:=xlNo
Albo inny sposób:
With ActiveSheet.Sort .SortFields.Clear .SortFields.Add Key:=Range("A5", Range("A5").End(xlDown)) .SetRange Range("A5", Range("A5").End(xlToRight).End(xlDown)) .Apply End With
Założenie to samo.
Nie do końca zadziałało tak jak powinno.
xlToRight ograniczył sortowanie do miejsca gdzie zastosowano inne formatowanie graficzne w postaci.
Podaję miejsce gdzie się zatrzymał:
lOstRwE_J = Cells(Rows.Count, 1).End(xlUp).Row With Range(Cells(3, 5), Cells(lOstRwE_J, 10)) .Interior.ColorIndex = 42 .Borders(xlInsideHorizontal).LineStyle = xlContinuous .Borders(xlInsideHorizontal).Weight = xlThin .Borders(xlInsideVertical).LineStyle = xlContinuous .Borders(xlInsideVertical).Weight = xlThin End With
Znam dokładny rozmiar tabeli, więc zmieniłem kod:
ActiveSheet.Range("A3", Range("A3").Range("J3").End(xlDown)).Sort Key1:=Range("a3"), Header:=xlNo
Dodaję tylko jako spostrzeżenie.