VBA do sortowania kolumn w Excelu (4 metody)

  • Udostępnij To
Hugh West

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.
  • xlAscending = Aby posortować w kolejności rosnącej.
  • xlDescending = Aby posortować w porządku malejącym.
Nagłówek Opcjonalnie XlYesNoGuess Określa, czy pierwszy wiersz zawiera nagłówki, czy nie.
  • xlNie = Gdy kolumna nie ma żadnych nagłówków; Wartość domyślna.
  • xlYes = Gdy kolumny mają nagłówki.
  • xlGuess = Pozwolenie Excelowi na określenie nagłówków.

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.

Hugh West jest bardzo doświadczonym trenerem i analitykiem Excela z ponad 10-letnim doświadczeniem w branży. Posiada tytuł licencjata w dziedzinie rachunkowości i finansów oraz tytuł magistra administracji biznesowej. Hugh ma pasję do nauczania i opracował unikalne podejście do nauczania, które jest łatwe do naśladowania i zrozumienia. Jego specjalistyczna wiedza na temat programu Excel pomogła tysiącom studentów i profesjonalistów na całym świecie doskonalić swoje umiejętności i osiągać doskonałe wyniki w karierze. Za pośrednictwem swojego bloga Hugh dzieli się swoją wiedzą ze światem, oferując bezpłatne samouczki programu Excel i szkolenia online, aby pomóc osobom indywidualnym i firmom w pełni wykorzystać swój potencjał.