VBA do sortowania tabeli w Excelu (4 metody)

  • Udostępnij To
Hugh West

Wdrażanie Makro VBA jest najskuteczniejszą, najszybszą i najbezpieczniejszą metodą wykonywania dowolnych operacji w Excelu. W tym artykule pokażemy, jak posortować tabelę w Excelu z VBA .

Pobierz Workbook

Darmowy ćwiczeniowy zeszyt Excela można pobrać stąd.

Sortowanie tabeli za pomocą VBA.xlsm

Rzeczy, które warto wiedzieć przed wdrożeniem VBA do sortowania tabeli w Excelu

Istnieją pewne parametry, których trzeba często używać podczas pracy z Sortuj sposób VBA Więc tutaj omówimy niektóre z parametrów, abyś był zaznajomiony podczas pisania kodu.

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 tabeli w Excelu

W tym rozdziale dowiesz się, jak sortowanie tabel Excela poprzez uwzględnienie wartość, kolory, ikony oraz wiele kolumn z VBA kod.

1. wbudowane VBA do sortowania tabeli według wartości w Excelu

Biorąc pod uwagę poniższy przykład posortuj tę tabelę według wartości obecny w Mark kolumna w porządku malejącym.

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 SortTableValue() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("SortTBL") Set iColumn = Range("SortTBL[Marks]") With iTable.Sort .SortFields.Clear .SortFields.Add Key:=iColumn, SortOn:=xlSortOnValues, Order:=xlDescending .Header = xlYes .Apply End With End Sub. 

Twój kod jest teraz gotowy do uruchomienia.

Tutaj,

  • SortTBL → Określenie nazwy tabeli.
  • SortTBL[Marki] -> Określona nazwa kolumny tabeli do sortowania.
  • Key1:=iColumn → Określenie zakresu kolumn, aby kod wiedział, którą kolumnę w tabeli posortować.
  • Order1:=xlDescending → Określenie zamówienia jako. xlDescending aby posortować kolumnę w porządku malejącym. Jeśli chcesz posortować kolumnę w porządku rosnącym, napisz xlAscending zamiast.
  • Nagłówek:= xlYes → Ponieważ kolumna w tej tabeli ma nagłówek, więc określiliśmy go za pomocą xlYes 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 kolumna w twojej tabeli to teraz posortowane w kolejności malejącej .

Read More: Jak posortować dane według wartości w programie Excel (5 prostych metod)

2. wstawianie makra VBA do sortowania tabeli dla wielu kolumn

Można również sortowanie tabeli dla wielu kolumn w Excelu z VBA makro.

Z powyższej tabeli posortujemy kolumny Nazwa oraz Dział w porządku rosnącym.

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 SortTable() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("TableValue") Set iColumn1 = Range("TableValue[Name]") Set iColumn2 = Range("TableValue[Department]") With iTable.Sort .SortFields.Clear .SortFields.Add Key:=iColumn1, Order:=xlAscending .SortFields.Add Key:=iColumn2, Order:=xlAscending.Header = xlYes .Apply End With End Sub 

Twój kod jest teraz gotowy do uruchomienia.

Tutaj,

  • TableValue → Określenie nazwy tabeli.
  • TableValue[Nazwa] -> Określona nazwa pierwszej kolumny tabeli do sortowania.
  • TableValue[Departament] -> Określona nazwa drugiej kolumny tabeli do sortowania.
  • Key1:=iColumn1 → Określenie zakresu kolumn, aby kod wiedział, że pierwsza kolumna w tabeli musi być posortowana.
  • Key1:=iColumn2 → Określenie zakresu kolumn, aby kod wiedział, że druga kolumna w tabeli musi być posortowana.
  • Order1:=xlAscending → Określenie zamówienia jako. xlAscending aby posortować kolumnę w porządku malejącym. Jeśli chcesz posortować kolumnę w porządku malejącym napisz xlDescending zamiast.
  • Nagłówek:= xlYes → Ponieważ kolumny tej tabeli mają nagłówki, określiliśmy je za pomocą xlYes opcja.

  • Uruchom ten kod, a otrzymasz oba kolumny tabeli posortowane w porządku rosnącym.

Read More: Jak automatycznie sortować wiele kolumn w programie Excel (3 sposoby)

Podobne lektury

  • Jak posortować unikalną listę w Excelu (10 przydatnych metod)
  • Sortuj tablicę za pomocą Excel VBA (zarówno rosnąco, jak i malejąco)
  • Jak sortować i filtrować dane w programie Excel (kompletny przewodnik)
  • Automatyczne sortowanie w Excelu po zmianie danych (9 przykładów)
  • Sortowanie losowe w Excelu (Formuły + VBA)

3. wdrożenie makra do sortowania tabeli według koloru komórek w Excelu

Można również sortowanie tabeli według koloru komórki które zawiera.

Mając powyższą tabelę jako nasz przykład, pokażemy, jak posortować ją na podstawie kolorów, które ta tabela przechowuje.

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 SortTableColor() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("SortTable") Set iColumn = Range("SortTable[Marks]") With iTable.Sort .SortFields.Clear .SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(248, 203, 173) .SortFields.Add(Key:=iColumn,Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(255, 217, 102) .SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(198, 224, 180) .SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(180, 198, 231) .Header = xlYes .Apply End With End Sub 

Twój kod jest teraz gotowy do uruchomienia.

Tutaj RGB kody, które dostarczyliśmy, możesz je znaleźć lub jakiekolwiek inne RGB kod, który chcesz, postępując zgodnie z gifem podanym poniżej.

  • Wystarczy kliknąć na kolorowa komórka .
  • W Strona główna kliknij na zakładkę strzałka obok Kolor wypełnienia następnie wybierz Więcej kolorów . You will see the RGB kody w Niestandardowe zakładka pojawiła się Kolory wyskakujące okienko.

  • Uruchom ten kod i twoja tabela będzie posortowane według kolorów .

Read More: Jak sortować według koloru w Excelu (4 kryteria)

4. zastosować VBA do sortowania tabeli Excela według ikony

Załóżmy, że tabela zbioru danych ma ikony dla lepszej czytelności. Możesz posortować tabela oparta na ikonach w Excelu z VBA makro.

Spójrz na powyższy zbiór danych. Tutaj tabela ma ikony obok wartości liczbowych w Marks kolumny, dzięki czemu możemy zrozumieć, który student ma dobre, złe lub średnie wyniki.

Zauważ, że jeśli nie wiesz jak wstawić ikonę wewnątrz komórki, możesz to zrobić po prostu za pomocą Formatowanie warunkowe funkcja w programie Excel.

  • Wybierz cały zakres lub kolumnę.
  • Idź do Formatowanie warunkowe -> Zestawy ikon Następnie wybierz dowolny zestaw ikon, który chcesz z opcji.

Kroki do posortować tabelę na podstawie ikon podano poniżej.

Kroki:

  • 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 SortTableIcon() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("IconTable") Set iColumn = Range("IconTable[Marks]") With iTable.Sort .SortFields.Clear .SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(1) .SortFields.Add(Key:=iColumn,Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(2)   .SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(3)   .SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(4)   .SortFields.Add(Key:=iColumn,Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(5) .Header = xlYes .Apply End With End Sub 

Twój kod jest teraz gotowy do uruchomienia.

Tutaj,

  • strzałki xl5 -> Wybraliśmy zestaw 5 strzałek z opcji w Formatowanie warunkowe .
  • Pozycja (1) -> Określone. pierwszy typ ikony strzałki.
  • Pozycja (2) -> Określone. druga typ ikony strzałki.
  • Pozycja (3) -> Określone. trzeci typ ikony strzałki.
  • Pozycja (4) -> Określone. czwarty typ ikony strzałki.
  • Pozycja (5) -> Określone. piąty typ ikony strzałki.

  • Uruchom ten kod i tabela będzie posortowane na podstawie ikon .

Read More: Jak automatycznie sortować tabelę w programie Excel (5 metod)

Wniosek

Ten artykuł pokazał, jak posortować tabelę 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ł.