🔍 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
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?
- Makro pyta użytkownika o literę kolumny (np. A, B, C).
- Zamienia ją na numer kolumny.
- Określa zakres danych (automatycznie).
- Sortuje dane rosnąco według wskazanej kolumny.
💡 Co możesz zmienić?
- Aby sortować malejąco – zamień
Order:=xlAscendingnaxlDescending. - Możesz dodać kolejne pytanie o kolejność sortowania (rosnąco/malejąco).
- Zakres danych można zmienić z
CurrentRegionna 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.