Kategorie szkoleń | Egzaminy | Kontakt
  • 2
  • 0
  • 190

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



Łukasz_Franczak
  • Zapytał
  • @ Łukasz_Franczak | 09.04.2014
    • 2
    • 0
    • 4

Odpowiedzi (2)

  • 0

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.

  • Odpowiedział
  • @ | 09.04.2014
  • TRENER ALTKOM AKADEMII
Komentarze
Dziękuje, dokładnie chodziło mi o pierwsze rowiązanie.
Skomentował : @ Łukasz_Franczak ,10.04.2014
  • 2
  • 0
  • 4
  • 0

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.

Łukasz_Franczak
  • Odpowiedział
  • @ Łukasz_Franczak | 10.04.2014
    • 2
    • 0
    • 4
Komentarze
Jasne, ja założyłem, że np. nie ma pustych komórek w tym pierwszym wierszu, inaczej xlToRight się zatrzyma i ograniczy sortowanie i w efekcie nie uwzględni kolumn na prawo... Zawsze można to zrobić poprzez CurrentRegion, wykluczając z niego dwa pierwsze wiersze, albo jak znamy adres końca tabeli to go wpisać, jak u Pana J3.
Skomentował : @ TRENER ALTKOM AKADEMII ,10.04.2014