馃攳 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
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.
Brak komentarzy:
Prze艣lij komentarz