Spis treści
Aby posortować w Excelu za pomocą VBA , należy zastosować Range.Sort W tym artykule pokażemy, jak posortować kolumnę w programie Excel z Range.Sort sposób VBA .
Pobierz Workbook
Darmowy ćwiczeniowy zeszyt Excela można pobrać stąd.
Sortowanie kolumn za pomocą VBA.xlsm
Metoda Range.Sort w Excelu VBA
Range.Sort sposób w VBA sortuje zakres wartości w Excelu. tutaj Zakres jest zmienną obiektową określającą zakres komórek, które chcemy sortować w kolejności rosnącej lub malejącej.
Poniżej przedstawiamy parametry, o których należy wiedzieć pracując z tą metodą.
Parametr | Wymagane/ Fakultatywne | Typ danych | Opis |
---|---|---|---|
Kluczowy | Opcjonalnie | Wariant | Określa zakres lub kolumnę, której wartości mają być posortowane. |
Zamówienie | Opcjonalnie | XlSortOrder | Określa kolejność, w jakiej zostanie wykonane sortowanie.
|
Nagłówek | Opcjonalnie | XlYesNoGuess | Określa, czy pierwszy wiersz zawiera nagłówki, czy nie.
|
4 Metody wdrażania VBA do sortowania kolumn w Excelu
W tym rozdziale dowiesz się, jak sortowanie pojedynczej kolumny z nagłówkiem i bez nagłówka , wiele kolumn z nagłówkami i bez nagłówków i jak sortowanie poprzez dwukrotne kliknięcie nagłówka w kolumnie w Excelu.
1. wbudowane VBA do sortowania pojedynczej kolumny bez nagłówka w Excelu
Jeśli chcesz posortować pojedynczą kolumnę w arkuszu Excela z VBA kod, a następnie wykonaj poniższe kroki.
To jest nasza kolumna, którą będziemy sortować za pomocą VBA kod.
Kroki:
- Naciśnij Alt + F11 na klawiaturze lub przejdź do zakładki Programista -> Visual Basic otworzyć Edytor Visual Basic .
- W wyskakującym oknie kodu, na pasku menu, kliknij Insert -> Moduł .
- Skopiuj poniższy kod i wklej go do okna kodu.
Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Twój kod jest teraz gotowy do uruchomienia.
Tutaj,
- Key1:=Range("B5") → Określone B5 aby kod wiedział, która kolumna ma być sortowana.
- Order1:=xlAscending → Określenie zamówienia jako. xlAscending aby posortować kolumnę w porządku rosnącym. Jeśli chcesz posortować kolumnę w porządku malejącym, napisz xlDescending zamiast.
- Nagłówek:= xlNo → Ponieważ nasza kolumna nie posiada żadnego nagłówka, określiliśmy ją za pomocą xlNie opcja.
- Naciśnij F5 na klawiaturze lub z paska menu wybrać Run -> Run Sub/UserForm. Możesz też po prostu kliknąć na mała ikona Play na pasku podmenu, aby uruchomić makro.
Zobaczysz, że twoja kolumna jest teraz posortowane w kolejności rosnącej .
Zauważ, że tutaj zdefiniowaliśmy ręcznie zakres danych jako Range("B5:B15") .
Jeśli chcesz zmienić dane, dodając lub usuwając wartości, możesz zaimplementować następujący kod, który automatycznie aktualizuje się na podstawie komórek w zestawie danych.
Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Zauważ, że zamiast definiować zakres ręcznie przez Range("B5:B15") , napisaliśmy, Zakres( "B5", Range("B5"). End(xlDown)) .
Spowoduje to posortowanie kolumny na podstawie ostatniej kolejno wypełnionej komórki w niej. Jeśli są puste komórki, dane będą brane pod uwagę tylko do pierwszej pustej komórki.
Read More: VBA do sortowania tabeli w Excelu (4 metody)
2. wstawianie makra VBA do sortowania pojedynczej kolumny z nagłówkiem
W poprzednim rozdziale mieliśmy zbiór danych składający się z pojedynczej kolumny bez nagłówka, ale teraz mamy a kolumna z nagłówkiem .
Tym razem dowiemy się, jak posortować go za pomocą Makro VBA .
Kroki:
- W taki sam sposób jak poprzednio, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- W oknie kodu skopiuj poniższy kod i wklej go.
Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub
Twój kod jest teraz gotowy do uruchomienia.
Tutaj,
- Key1:=Range("B5") → Określone B5 aby kod wiedział, która kolumna ma być sortowana.
- Order1:=xlDescending → Tym razem będziemy sortować kolumnę w kolejności malejącej, więc określamy kolejność jako xlDescending .
- Nagłówek:= xlYes → Ponieważ nasza kolumna ma tym razem nagłówek, określamy go za pomocą xlYes opcja.
- Uruchom ten kod, a otrzymasz kolumna z nagłówkiem posortowana w porządku malejącym .
Read More: Jak sortować ListBox z VBA w Excelu (Kompletny przewodnik)
Podobne Lektury:
- Jak posortować adres IP w programie Excel (6 metod)
- [Rozwiązany!] Excel Sort nie działa (2 rozwiązania)
- Jak dodać przycisk sortowania w programie Excel (7 metod)
- Sortowanie zakresu za pomocą VBA w Excelu (6 przykładów)
- Jak sortować według nazwy w Excelu (3 przykłady)
3. Makro VBA do sortowania wielu kolumn z lub bez nagłówka
Można również sortowanie wielu kolumn w zbiorze danych za pomocą kodu VBA.
Kroki:
- Jak wcześniej wykazano, otwarte Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- W oknie kodu skopiuj poniższy kod i wklej go.
Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub
Twój kod jest teraz gotowy do uruchomienia.
Tutaj,
.SortFields.Add Key:=Range("B4"), Order:=xlAscending
.SortFields.Add Key:=Range("C4"), Order:=xlAscending
Przez te dwie linie definiujemy Komórka B4 oraz C4 posortować dwie związane z nimi kolumny w wzrastający .
Ponieważ w naszym zbiorze danych mamy nagłówki, więc określiliśmy Nagłówek = xlYes w przeciwnym razie napisalibyśmy Nagłówek = xlNo wewnątrz kodu.
- Uruchom ten kod, a otrzymasz kolumny z nagłówkiem posortowane w kolejności rosnącej .
4. Makro do sortowania danych przez podwójne kliknięcie na nagłówek w Excelu
Jeśli chcesz z łatwością posortować dane po prostu przez podwójne kliknięcie na nagłówek , można to zrobić za pomocą VBA kod.
Kroki:
- Kliknij prawym przyciskiem myszy na stronie na zakładka arkusza .
- Na wyświetlonej liście opcji kliknij Wyświetl kod .
- Pojawi się okno z kodem, skopiuj poniższy kod i wklej go tam.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub.
- Zapisz kod.
- Teraz wróć do interesującego Cię arkusza i jeśli kliknij dwukrotnie na nagłówki zobaczysz, że kolumny się reorganizują.
Czytaj więcej: Jak sortować i filtrować dane w programie Excel (kompletny przewodnik)
Rzeczy do zapamiętania
- Możesz utworzyć nazwany zakres i użyć go zamiast tego, gdy przekazujesz zakres odwołań do komórek wewnątrz Sortuj Na przykład, jeśli chcesz posortować zakres A1:A10 , zamiast przekazywać go za każdym razem wewnątrz kodu, możesz stworzyć jego nazwany zakres, np. SortRange " i używać go z Range.Sort jak Range("SortRange") .
- Jeśli nie jesteś pewien, czy twój zbiór danych ma nagłówki czy nie, możesz pozwolić systemowi określić to za pomocą xlGuess parametr.
Wniosek
Ten artykuł pokazał, jak posortować kolumnę w Excelu VBA Mam nadzieję, że ten artykuł był dla Ciebie bardzo korzystny. Czuj się swobodnie, jeśli masz jakieś pytania dotyczące tematu.