Sortowanie Excel VBA

Istnieją różne sposoby sortowania danych w programie Microsoft Excel. Na wstążce karty Excel Data znajduje się ikona sortowania, z której można szybko posortować dane i uzyskać wyniki. Dlaczego więc trzeba pisać skomplikowany kod VBA?

Musisz pamiętać o tym za każdym razem, gdy kody VBA służą do automatyzacji. Załóżmy, że masz dane, które są aktualizowane od czasu do czasu. Może codziennie, co tydzień, co miesiąc itp. I potrzebujesz swoich danych w określony sposób. W takich przypadkach można użyć funkcji VBA SORT i stanie się ona przydatnym narzędziem w celach informacyjnych.

VBA ma metodę Range.Sort do sortowania danych. Gdzie Zakres określa zakres komórek, które chcemy uporządkować w kolejności rosnącej lub malejącej.

Składnia dla Range.Sort jest następująca:

Gdzie,

  • Klucz - kolumna / zakres, które należy posortować. Dawny. Jeśli chcesz sortować komórki A1: A10, powinieneś wspomnieć o zakresie (A1: A10)
  • Kolejność - jest to parametr, który pozwala sortować dane w kolejności rosnącej lub malejącej.
  • Nagłówek - ten parametr określa, czy kolumna / zakres ma nagłówki, czy nie.

Te trzy parametry są wystarczające dla naszego postępowania. Istnieją jednak inne parametry, takie jak MatchCase, SortMethod itp., Które zawsze możesz zbadać i zobaczyć, jak działają.

Jak korzystać z funkcji sortowania Excel VBA?

Dowiemy się, w jaki sposób można użyć sortowania VBA do sortowania kolumny bez nagłówków, kolumny z nagłówkami i wielu kolumn z przykładami w programie Excel.

Możesz pobrać ten szablon Excel Sortuj VBA tutaj - Szablon Excel Sortuj VBA

Funkcja sortowania VBA - przykład nr 1

Sortowanie pojedynczej kolumny bez nagłówka

Załóżmy, że masz kolumnę z nazwami, jak pokazano poniżej, a wszystko, czego potrzebujesz, to sortowanie tych danych alfabetycznie w kolejności rosnącej lub malejącej.

Wykonaj poniższe czynności, aby użyć funkcji Sortuj w VBA.

Krok 1: Zdefiniuj nową procedurę sup w ramach modułu i utwórz makro.

Kod:

 Sub SortEx1 () End Sub 

Krok 2: Użyj funkcji Range.Sort, aby posortować tę kolumnę w porządku rosnącym.

Kod:

 Sub SortEx1 () Range („A1”, Range („A1”). End (xlDown)). Sortuj End Sub 

Tutaj podajesz zakres od komórki A1 do ostatnio używanej / niepustej komórki (patrz funkcja .End (xlDown)) do funkcji Range.Sort.

Krok 3: Teraz wprowadź wartości argumentów.

Kod:

 Sub SortEx1 () Zakres („A1”, Zakres („A1”). Koniec (xlDown)). Klawisz sortowania 1: = Zakres („A1”), Kolejność 1: = xl Zwiększanie, Nagłówek: = xl Brak końca sub 

Jak już omówiliśmy wcześniej, Klucz, Porządek i Nagłówek są ważnymi i niezbędnymi argumentami, które należy podać. Podaliśmy Range („A1”) jako zakres początkowy kolumny, który musimy posortować. Porządek jest podawany jako Rosnąco, a Nagłówek jako Nie (co oznacza, że ​​kolumna nie ma nagłówka).

Ten kod sprawdzi, czy wszystkie niepuste komórki zaczynają się od A1, a następnie sortuje je w porządku rosnącym, zaczynając od komórki A1.

Krok 4: Uruchom ten kod, naciskając ręcznie klawisz F5 lub Run i zobacz wynik.

Jeśli możesz porównać to z obrazem na początku tego przykładu, możesz zobaczyć, że nazwy są posortowane w porządku rosnącym.

Funkcja sortowania VBA - przykład 2

Sortowanie pojedynczej kolumny z nagłówkiem

Załóżmy, że masz kolumnę z nagłówkiem, jak pokazano poniżej. I chciałeś posortować tę kolumnę w kolejności rosnącej lub malejącej.

Wykonaj poniższe czynności, aby użyć funkcji Sortuj w VBA.

Krok 1: Zdefiniuj nową podprocedurę w nowym modelu do przechowywania makra.

Kod:

 Sub SortEx2 () End Sub 

Krok 2: Użyj Arkuszy („Przykład 2”), aby określić, który arkusz są twoimi danymi.

Kod:

 Sub SortEx2 () Arkusze („Przykład 2”) Zakończ Sub 

Krok 3: Użyj zakresu („A1”) Sortuj przed powyższą linią kodu, aby uczynić ją funkcją sortowania.

Kod:

 Sub SortEx2 () Arkusze („Przykład 2”). Zakres („A1”). Sortuj End Sub 

Krok 4: Podaj klucz 1 jako zakres („A1”), aby posortować dane z komórki A1, Kolejność 1, aby posortować dane w kolejności rosnącej lub malejącej oraz Nagłówek jako Tak, aby system wiedział, że pierwszy wiersz jest nagłówkiem w twoim dane.

Kod:

 Sub SortEx2 () Arkusze („Przykład 2”). Zakres („A1”). Klawisz sortowania 1: = Zakres („A1”), Kolejność 1: = xl Zwiększanie, Nagłówek: = xl Tak Koniec Sub 

Krok 5: Uruchom ten kod, naciskając ręcznie klawisz F5 lub Run i zobacz dane wyjściowe.

Tutaj dane z przykładu 2 danego skoroszytu programu Excel są sortowane w kolejności rosnącej, biorąc pod uwagę, że ma nagłówek. Co oznacza, że ​​podczas sortowania tych danych pierwszy wiersz (zawierający nazwę Emp ) jest pomijany, ponieważ jest uważany za nagłówek tych danych w kolumnie A.

Możesz również sortować te same dane w kolejności malejącej alfabetów. Wszystko, co musisz zrobić, to zmienić kolejność z rosnącej na malejącą.

Krok 6: Zmień kolejność 1 na malejącą, aby posortować dane w malejącej kolejności.

Kod:

 Sub SortEx2 () Arkusze („Przykład 2”). Zakres („A1”). Klawisz sortowania 1: = Zakres („A1”), Kolejność 1: = xl Malejąco, nagłówek: = xl Tak Koniec sub 

Krok 7: Uruchom kod i zobacz dane wyjściowe, jak podano poniżej.

Możesz zobaczyć, że dane są sortowane w porządku malejącym.

Funkcja sortowania VBA - przykład 3

Sortowanie wielu kolumn z nagłówkami

Do tej pory omawialiśmy, jak sortować dane z jednej kolumny w porządku rosnącym lub malejącym (bez nagłówka i nagłówka). Co jeśli masz dane, które musisz posortować według wielu kolumn? Czy można napisać kod dla tego samego?

Odpowiedź brzmi: „Tak, na pewno da się to zrobić!”

Załóżmy, że masz dane podane poniżej:

Chcesz posortować te dane najpierw według nazwy Emp, a następnie według lokalizacji. Wykonaj poniższe kroki, aby zobaczyć, jak możemy go zakodować w VBA.

Krok 1: Zdefiniuj nową podprocedurę, aby dodać makro w nowym module.

Kod:

 Sub SortEx3 () End Sub 

Krok 2: Użyj instrukcji With… End With, aby dodać wiele warunków sortowania w jednej pętli.

Kod:

 Sub SortEx3 () Z ActiveSheet.Sort End Sub 

Krok 3: Teraz użyj SortFields.Add, aby dodać wiele warunków sortowania w tym samym arkuszu.

Kod:

 Sub SortEx3 () Z ActiveSheet.Sort .SortFields.Add Klawisz: = Zakres („A1”), Kolejność: = xlAscending .SortFields.Add Klawisz: = Zakres („B1”), Kolejność: = xlAscending End Sub 

Krok 4: Wybierz zakres arkusza do sortowania i nagłówek W następnym kroku.

Kod:

 Sub SortEx3 () Z ActiveSheet.Sort .SortFields.Add Key: = Range („A1”), Order: = xlAscending .SortFields.Add Key: = Range („B1”), Order: = xlAscending .SetRange Range („A1 : C13 "). Nagłówek = xl Tak Koniec Sub 

Krok 5: Użyj .Zastosuj, aby zastosować wszystkie te rzeczy z instrukcją i zamknąć pętlę piszącą Koniec.

Kod:

 Sub SortEx3 () Z ActiveSheet.Sort .SortFields.Add Key: = Range („A1”), Order: = xlAscending .SortFields.Add Key: = Range („B1”), Order: = xlAscending .SetRange Range („A1 : C13 "). Nagłówek = xl Tak. Zastosuj Koniec z końcem Sub 

Krok 6: Uruchom ten kod, naciskając ręcznie klawisz F5 lub Run i zobacz Wyjście.

W tym kodzie ActiveSheets.Sort pomaga systemowi zidentyfikować arkusz, pod którym dane mają być sortowane. SortFields.Add pozwala na dodanie dwóch warunków sortowania wraz z ich kolejnością (Rosnąco w obu przypadkach). SetRange pozwala systemowi ustawić zakres od A1 do C13. Możesz także zwiększyć ten zakres. Instrukcje Apply pozwalają systemowi zastosować wszystkie zmiany wprowadzone w pętli With.

Wreszcie otrzymasz dane, które są sortowane na podstawie najpierw nazwy Emp, a następnie według lokalizacji.

Rzeczy do zapamiętania

  • W obszarze Sortowanie VBA możesz tworzyć nazwane zakresy zamiast odwołań do komórek i używać tych samych. Dawny. Jeśli utworzyłeś nazwany zakres dla komórki A1: A10 jako „EmpRange”, możesz go użyć w Range.Sort jak Range („EmpRange”).
  • Możesz sortować dane w kolejności rosnącej i malejącej tak samo jak w programie Excel.
  • Jeśli nie masz pewności, czy dane mają nagłówek, możesz użyć xlGuess w sekcji Nagłówek, aby system odgadł, czy pierwszy wiersz danych jest nagłówkiem, czy nie.

Polecane artykuły

To był przewodnik po Excel VBA Sort. Tutaj omawialiśmy VBA Sort i jak korzystać z Excela VBA Sort Function wraz z praktycznymi przykładami i szablonem Excel do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -

  1. Krótki przewodnik po programie Excel Sortuj według numeru
  2. Korzystanie z funkcji dopasowania VBA
  3. Jak posortować kolumnę w programie Excel?
  4. VBA While Loop | MS Excel

Kategoria: