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 VBAFunkcja 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 -
- Krótki przewodnik po programie Excel Sortuj według numeru
- Korzystanie z funkcji dopasowania VBA
- Jak posortować kolumnę w programie Excel?
- VBA While Loop | MS Excel