czwartek, 31 lipca 2025

Excel VBA: Makro do sortowania danych wed艂ug kolumny wskazanej przez u偶ytkownika

馃攳 Co robi to makro?

To makro pozwala u偶ytkownikowi wpisa膰 liter臋 kolumny, wed艂ug kt贸rej dane maj膮 zosta膰 posortowane. Dzia艂a dynamicznie – czyli nie musisz modyfikowa膰 kodu za ka偶dym razem. Idealne do plik贸w z r贸偶nym uk艂adem kolumn.

馃搵 Kod VBA: ka偶da linia w nowym wierszu

Sub SortujPoWybranejKolumnie()
  Dim ws As Worksheet
  Dim kolumnaLitera As String
  Dim kolumnaNr As Long
  Dim zakresDanych As Range

  Set ws = ActiveSheet

  kolumnaLitera = UCase(InputBox("Podaj liter臋 kolumny, wed艂ug kt贸rej chcesz sortowa膰:", "Sortowanie danych"))

  If kolumnaLitera = "" Then
    MsgBox "Nie wybrano kolumny. Makro zosta艂o przerwane.", vbExclamation
    Exit Sub
  End If

  kolumnaNr = Range(kolumnaLitera & "1").Column

  Set zakresDanych = ws.Range("A1").CurrentRegion

  With ws.Sort
    .SortFields.Clear
    .SortFields.Add Key:=ws.Columns(kolumnaNr), _
      SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange zakresDanych
    .Header = xlYes
    .Apply
  End With

  MsgBox "Dane zosta艂y posortowane wed艂ug kolumny " & kolumnaLitera & ".", vbInformation
End Sub

馃洜️ Jak dzia艂a to makro?

  1. Makro pyta u偶ytkownika o liter臋 kolumny (np. A, B, C).
  2. Zamienia j膮 na numer kolumny.
  3. Okre艣la zakres danych (automatycznie).
  4. Sortuje dane rosn膮co wed艂ug wskazanej kolumny.

馃挕 Co mo偶esz zmieni膰?

  • Aby sortowa膰 malej膮co – zamie艅 Order:=xlAscending na xlDescending.
  • Mo偶esz doda膰 kolejne pytanie o kolejno艣膰 sortowania (rosn膮co/malej膮co).
  • Zakres danych mo偶na zmieni膰 z CurrentRegion na np. Range("A1:Z1000").

✅ Podsumowanie

To makro jest bardzo elastyczne i wygodne, je艣li pracujesz z du偶膮 ilo艣ci膮 danych w r贸偶nych uk艂adach. Dzia艂a bez potrzeby r臋cznego filtrowania i mo偶na je szybko przypisa膰 do przycisku lub skr贸tu klawiszowego.

Brak komentarzy:

Prze艣lij komentarz