Jak sortować arkusze kalkulacyjne w programie Excel za pomocą VBA (alfabetycznie)

Jeśli pracujesz z wieloma arkuszami w programie Excel, wiesz, że zarządzanie nimi może stać się problemem.

Gdy masz więcej niż kilka arkuszy, musisz je ręcznie ułożyć.

Jak łatwo byłoby, gdyby istniał sposób na szybkie sortowanie arkuszy w programie Excel.

Chociaż nie ma wbudowanej funkcji, aby to zrobić, można to zrobić (łatwo) za pomocą VBA.

W tym samouczku podam kod i dokładne kroki, które należy wykonać, aby posortować arkusze kalkulacyjne w programie Excel.

Możesz dostosować kod, aby posortować arkusze w kolejności rosnącej lub malejącej.

Kod VBA do sortowania arkuszy w programie Excel

Poniżej znajduje się kod, który posortuje arkusze w kolejności alfabetycznej, gdy tylko go uruchomisz.

Sub SortWorksheetsTabs() Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount Jeśli UCase(Arkusze(j). Nazwa) < UCase(Arkusze(i).Nazwa) Następnie Arkusze(j).Przenieś przed:=Arkusze(i) Koniec Jeśli Dalej j Dalej i Aplikacja.ScreenUpdating = Prawda Koniec Sub

Powyższy kod jest prostym kodem, który wykorzystuje pętle For Next do analizy każdego arkusza roboczego względem wszystkich arkuszy.

Porównuje nazwę arkusza roboczego ze wszystkimi arkuszami i przesuwa go na podstawie jego nazwy w kolejności alfabetycznej.

Następnie przechodzi do następnego arkusza, a następnie porównuje go ze wszystkimi arkuszami.

Proces ten jest powtarzany dla wszystkich arkuszy roboczych, a ostatecznym wynikiem jest kolejność arkuszy posortowanych w kolejności alfabetycznej.

Kilka ważnych rzeczy, które należy wiedzieć o tym kodzie:

  1. Funkcja UCase służy do upewnienia się, że małe i wielkie litery nie są traktowane inaczej.
  2. Wartość Application.ScreenUpdating jest ustawiona na False na początku kodu i zmieniona na True na końcu kodu. Gwarantuje to, że gdy kod jest uruchomiony, nie zobaczysz go na ekranie. Pomaga to również przyspieszyć wykonanie kodu.

Jeśli chcesz posortować arkusze w porządku malejącym, wystarczy zmienić znak (większe niż).

Poniższy kod posortuje arkusze w kolejności malejącej:

'Ten kod posortuje arkusze alfabetycznie. Sub SortWorksheetsTabs() Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Arkusze.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount Jeśli UCase(Arkusze(j).Nazwa) > UCase(Arkusze(i).Nazwa) Następnie Arkusze(j).Przenieś przed:=Arkusze(i) Koniec Jeśli Dalej j Dalej i Application.ScreenUpdating = True End Sub

Możesz również dać użytkownikowi możliwość wyboru, czy chce sortować w kolejności rosnącej/malejącej.

Poniższy kod wyświetli okno komunikatu, a użytkownik może wybrać kolejność do sortowania.

Sub SortWorksheetsTabs() Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox("Wybierz Tak dla kolejności rosnącej i Nie dla kolejności malejącej", vbYesNoCancel) ShCount = Sheets.Count For i = 1 Do ShCount - 1 For j = i + 1 To ShCount If SortOrder = vbYes Then If UCase(Arkusze(j).Nazwa) UCase(Arkusze(i).Nazwa) Następnie Arkusze(j).Przenieś przed:=Arkusze (i) End If End If Next j Next i Application.ScreenUpdating = True End Sub

Powyższy kod po wykonaniu wyświetla komunikat, jak pokazano poniżej. Sortuje na podstawie wyboru (Tak dla Rosnąco i Nie dla Malejąco).

Jeśli klikniesz Anuluj, kod się zatrzyma i nic się nie stanie.

Notatka: Sortowanie nie może zostać cofnięte. Jeśli chcesz zachować oryginalną kolejność, zrób kopię skoroszytu.

Słowo ostrzeżenia: Powyższy kod działa w większości przypadków. Jednym z obszarów, w którym otrzymasz błędny wynik, są nazwy kart, takie jak Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. Najlepiej byłoby, gdyby wszystkie zakładki na te same lata były razem, ale nie zostanie to zrobione, ponieważ Q12021-2022 zostanie umieszczony przed Q22021-2022.

Gdzie umieścić kod VBA

Excel ma zaplecze VBA zwane edytorem VBA.

Musisz skopiować i wkleić kod VBA do okna kodu modułu VB Editor.

Oto kroki, aby to zrobić:

  1. Kliknij kartę „Programista”. (Nie widzisz karty programisty? Kliknij tutaj, aby dowiedzieć się, jak ją zdobyć).
  2. Kliknij opcję Visual Basic. Spowoduje to otwarcie edytora VB w zapleczu.
  3. W okienku Eksplorator projektu w edytorze VB kliknij prawym przyciskiem myszy dowolny obiekt skoroszytu, do którego chcesz wstawić kod. (Jeśli nie widzisz Eksploratora projektu, przejdź do zakładki „Widok” i kliknij „Eksplorator projektu”).
  4. Przejdź do Wstaw i kliknij Moduł. Spowoduje to wstawienie obiektu modułu do skoroszytu.
  5. Skopiuj i wklej kod w oknie modułu.

Jak uruchomić kod VBA

W programie Excel istnieją różne sposoby uruchamiania kodu VBA.

Kod można uruchomić bezpośrednio z Edytora Visual Basic (zwanego również Edytorem VB).

Możesz wstawić przycisk lub kształt do arkusza i przypisać do niego makro. Po kliknięciu przycisku natychmiast uruchomi makro.

Możesz także dodać makro do paska narzędzi szybkiego dostępu (QAT). Teraz, gdy musisz posortować karty arkusza roboczego, możesz po prostu kliknąć ikonę kodu makra w QAT.

Możesz przeczytać wszystko o uruchamianiu makra tutaj - Jak uruchomić makro w programie Excel (lub obejrzyj wideo poniżej).
Możesz również polubić następujące samouczki Excel / VBA:

  • Jak sortować dane w Excelu za pomocą VBA.
  • Automatycznie sortuj dane w kolejności alfabetycznej za pomocą formuły.
  • Jak wykonać wielopoziomowe sortowanie danych w programie Excel.
  • Wprowadzenie do opcji sortowania danych programu Excel.
  • Autofiltr Excel VBA: kompletny przewodnik z przykładami
  • Jak grupować arkusze robocze w programie Excel
  • Jak odwracać dane w programie Excel

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave