Zakres sortowania VBA

Zakres sortowania Excel VBA

Sortowanie zakresu w VBA odbywa się według metody range.sort, jest to właściwość metody range, za pomocą której użytkownik może sortować zakres w kolejności, argumenty tej funkcji to Key1, Order1, Key2, Type, Order2, Key3 , Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3, wszystkie argumenty tej funkcji są opcjonalne.

W ramach organizowania lub strukturyzowania danych ważne jest, aby je sortować i organizować. Podobna rzecz jest dostępna również w przypadku VBA, więc częstym pytaniem dotyczącym nowych osób uczących się VBA jest to, w jaki sposób możemy skorzystać z tej opcji sortowania w ramach automatyzacji VBA, a ten artykuł szczegółowo przedstawia zakres sortowania VBA.

W programie Excel wszyscy znamy opcję sortowania, która jest dostępna w zakładce DANE.

Opcja sortowania w VBA

Aby skorzystać z opcji sortowania, najpierw musimy zdecydować, jaki jest nasz zakres danych i wspomnieć o tym samym zakresie za pomocą obiektu RANGE w VBA, a dopiero potem mamy dostęp do opcji „Sort” w VBA. Na przykład załóżmy, że mój zakres danych wynosi od A1 do D10, a następnie możemy podać następujący zakres danych.

Kod:

 Sub Sort_Range_Example () Range ("A1: D10") End Sub 

Teraz wstaw kropkę i wybierz metodę „SORTUJ”.

Kod:

 Sub Sort_Range_Example () Range ("A1: D10"). Sort End Sub 

Poniżej znajduje się składnia metody zakresu SORT, chociaż składnia ma różne argumenty, nie potrzebujemy ich wszystkich do naszego kodowania VBA, więc potrzebujemy tylko kilku elementów.

[Key1]: W zakresie danych, które sortujemy, musimy określić, którą kolumnę mamy sortować. Na przykład w zakresie danych A1: D10, jeśli chcemy posortować dane na podstawie kolumny B, wówczas [Klucz1] będzie Range („B1”) .

[Order1]: Wspomniana kolumna w argumencie [Key1] powinna być sortowana w jakiej kolejności. Do wyboru mamy dwie opcje „xlAscending” lub „xlDescending”.

Nagłówek: wspomniany zakres danych ma nagłówki lub nie, jeśli tak, możemy podać „xlYes” lub „xlNo”.

Przykład zakresu sortowania w VBA

Weźmy na przykład zakres sortowania VBA programu Excel, aby lepiej to zrozumieć.

Możesz pobrać ten szablon Excel z zakresem sortowania VBA tutaj - Szablon programu Excel z zakresem sortowania VBA

Na przykład spójrz na poniższą strukturę danych.

Mamy dane od A1 do E17, więc najpierw posortujemy dane według „Country-mądre”. Wykonaj poniższe czynności, aby napisać kod do sortowania danych.

Krok 1: Uruchom procedurę makra programu Excel.

Kod:

 Sub Sort_Range_Example () End Sub 

Krok 2: Najpierw wspomnij o zakresie danych za pomocą obiektu RANGE .

Kod:

 Sub Sort_Range_Example () Range ("A1: E17") End Sub 

Krok 3: Teraz wybierz metodę „ Sort ” obiektu Range.

Kod:

 Sub Sort_Range_Example () Range („A1: E17”). Sort End Sub 

Krok 4: Ponieważ sortujemy dane w oparciu o „Country-wise”, nasza kolumna z argumentem Key 1 będzie miała wartość Range („B1”).

Kod:

 Sub Sort_Range_Example () Range („A1: E17”). Sort Key1: = Range („B1”), End Sub 

Krok 5: Po wskazaniu wymaganej kolumny musimy wspomnieć, w jakiej kolejności musimy posortować dane, a „Order1” będzie oznaczać kolejność „xlAscending” .

Kod:

 Sub Sort_Range_Example () Range („A1: E17”). Sort Key1: = Range („B1”), Order1: = xlAscending, End Sub 

Krok 6: Nasze dane mają nagłówki, więc nagłówek będzie miał wartość „xlYes”.

Kod:

 Sub Sort_Range_Example () Range („A1: E17”). Sort Key1: = Range („B1”), Order1: = xlAscending, Header: = xlYes End Sub 

Wspomnieliśmy o wszystkich elementach potrzebnych do sortowania danych. Wykonaj kod, naciskając funkcję i klawisz F5 i zobacz wynik.

Wynik:

Dane zostały posortowane na podstawie nazw krajów w kolejności od A do Z.

Teraz załóżmy, że musimy posortować dane w oparciu o kraj, a także musimy posortować „ Sprzedaż brutto ” od największej do najniższej. W takich przypadkach musimy również skorzystać z argumentów Key2 i Order2.

Po wspominaniu o Key1 i Order1, wybierzmy Key2.

Kod:

 Sub Sort_Range_Example () Range („A1: E17”). Sort Key1: = Range („B1”), Order1: = xlAscending, Key2: = End Sub 

Ponieważ sortujemy dane w oparciu o kolumnę „ Sprzedaż brutto ”, nasza nazwa kolumny Key2 będzie miała wartość Range („D1”).

Kod:

 Sub Sort_Range_Example () Range („A1: E17”). Sort Key1: = Range („B1”), Order1: = xlAscending, Key2: = Range („D1”), End Sub 

Once the Key2 is specified we need to decide on the sorting patter of whether it is ascending order or descending order in Order2 argument since we are sorting the sales value from largest to smallest we can choose “xlDescending” order.

Code:

 Sub Sort_Range_Example() Range("A1:E17").Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("D1"), Order2:=xlDescending, Header:=xlYes End Sub 

After that mention the Header argument as “xlYes”. Now run the code and see what happens.

Output:

Previously it has sorted based only on “Country-wise” but this time it has sorted based on “Country-wise” first and then also on “Gross Sales” from highest to lowest.

Like this, we can use the “Sort” method in VBA to organize the data.

Things to Remember about Excel VBA Sort Range

  • The sort is a method available in VBA and to access this method we need to specify what the range of cells we are going to sort.
  • If the data range includes headers then we need to choose the header option as “xlYes”, if not we can choose “xlNo”.