Hur man sorterar kalkylblad i Excel med VBA (alfabetiskt)

Om du arbetar med många kalkylblad i Excel vet du att hanteringen av det kan bli ett problem.

När du har mer än ett par kalkylblad måste du ordna dessa manuellt.

Hur enkelt skulle det vara om det hade funnits ett sätt att snabbt sortera kalkylblad i Excel.

Det finns inget inbyggt funktionssätt för att göra detta, men det kan göras (enkelt) med VBA.

I den här självstudien ger jag dig koden och de exakta stegen du måste följa för att sortera kalkylblad i Excel.

Du kan justera koden för att sortera kalkylbladen i stigande eller fallande ordning.

VBA -kod för att sortera kalkylblad i Excel

Nedan är koden som kommer att sortera kalkylblad i alfabetisk ordning så snart du kör den.

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 If UCase (Sheets (j). Namn) <UCase (Kalkylark (i) .Namn) Sedan Kalkylark (j) .Flytta före: = Kalkylark (i) Sluta om Nästa j Nästa i Application.ScreenUpdating = True End Sub

Ovanstående är en enkel kod som används för For Next loops för att analysera varje kalkylblad mot alla kalkylblad.

Det jämför namnet på ett kalkylblad med alla kalkylblad och flyttar det baserat på dess namn i alfabetisk ordning.

Det går sedan vidare till nästa kalkylblad och kontrollerar det sedan mot alla kalkylblad.

Denna process upprepas för alla kalkylblad och slutresultatet är en ordning på kalkylblad sorterad i alfabetisk ordning.

Några viktiga saker att veta om den här koden:

  1. UCase -funktionen används för att se till att små och stora bokstäver inte behandlas annorlunda.
  2. Värdet för Application.ScreenUpdating är inställt på False i början av koden och ändras till True i slutet av koden. Detta säkerställer att medan koden körs ser du inte att den händer på skärmen. Detta hjälper också till att påskynda kodkörningen.

Om du vill sortera kalkylblad i fallande ordning behöver du bara ändra tecknet (större än).

Koden nedan skulle sortera kalkylbladen i fallande ordning:

'Denna kod kommer att sortera kalkylblad alfabetiskt 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 If UCase (Sheets (j) .Name)> UCase (Sheets (i) .Name) Then Sheets (j) .Flyg före: = Sheets (i) Avsluta om nästa j Next i Application.ScreenUpdating = True End Sub

Du kan också ge användaren möjlighet att välja om han/hon vill sortera i stigande/fallande ordning.

Koden nedan visar en meddelanderuta och användaren kan välja den ordning som ska sorteras.

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox ("Välj Ja för stigande ordning och nej för fallande ordning", vbYesNoCancel) ShCount = Sheets.C. i = 1 To ShCount - 1 For j = i + 1 To ShCount If SortOrder = vbYes Then If UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) Then Sheets (j) .Move before: = Sheets (i) End If End If Next j Next i Application.ScreenUpdating = True End Sub

Ovanstående kod när den körs visar ett meddelande enligt nedan. Den sorterar baserat på valet (Ja för stigande och Nej för fallande).

Om du klickar på Avbryt, stannar koden och ingenting händer.

Notera: Sorteringen kan inte ångras. Om du också vill behålla den ursprungliga beställningen, gör en kopia av arbetsboken.

Ett ord av försiktighet: Koden ovan fungerar i de flesta fall. Ett område där det ger dig fel resultat är när du har fliknamn som Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. Helst vill du att alla flikar för samma år ska vara tillsammans, men det kommer inte att göras eftersom Q12021-2022 kommer att placeras före Q22021-2022.

Var ska man lägga VBA -koden

Excel har en VBA -backend som kallas VBA -editor.

Du måste kopiera och klistra in VBA -koden i fönstret VB Editor -modulkod.

Här är stegen för att göra detta:

  1. Klicka på fliken "Utvecklare". (Kan du inte se utvecklarfliken? Klicka här för att lära dig hur du får det).
  2. Klicka på Visual Basic -alternativet. Detta öppnar VB -redigeraren i backend.
  3. I fönstret Projektutforskare i VB-redigeraren högerklickar du på valfritt objekt för arbetsboken där du vill infoga koden. (Om du inte ser Project Explorer går du till fliken "View" och klickar på "Project Explorer".)
  4. Gå till Infoga och klicka på Modul. Detta kommer att infoga ett modulobjekt för din arbetsbok.
  5. Kopiera och klistra in koden i modulfönstret.

Hur man kör VBA -koden

I Excel finns det olika sätt att köra VBA -koden.

Du kan köra koden direkt från Visual Basic Editor (även kallad VB Editor).

Du kan infoga en knapp eller en form i kalkylbladet och tilldela makrot till den. När du klickar på knappen körs makrot direkt.

Du kan också lägga till makrot i snabbåtkomstverktygsfältet (QAT). Nu när du måste sortera kalkylbladets flikar kan du bara klicka på makrokodsikonen i QAT.

Du kan läsa allt om hur du kör makrot här - Så här kör du ett makro i Excel (eller titta på videon nedan).
Du kanske också gillar följande Excel/VBA -handledning:

  • Så här sorterar du data i Excel med VBA.
  • Sortera data automatiskt i alfabetisk ordning med hjälp av formel.
  • Så här gör du datainsortering på flera nivåer i Excel.
  • En introduktion till Excel -datasorteringsalternativ.
  • Excel VBA Autofilter: En komplett guide med exempel
  • Hur man grupperar kalkylblad i Excel
  • Hur man vänder data i Excel

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave