Slik sorterer du regneark i Excel ved hjelp av VBA (alfabetisk)

Hvis du jobber med mange regneark i Excel, vet du at håndteringen av det kan bli et problem.

Når du har mer enn et par regneark, må du ordne disse manuelt.

Hvor enkelt ville det vært hvis det hadde vært en måte å raskt sortere regnearkene i Excel.

Selv om det ikke er noen innebygd funksjon for å gjøre dette, kan det gjøres (enkelt) ved hjelp av VBA.

I denne opplæringen vil jeg gi deg koden og de nøyaktige trinnene du må følge for å sortere regneark i Excel.

Du kan justere koden for å sortere regnearkene i stigende eller synkende rekkefølge.

VBA -kode for å sortere regneark i Excel

Nedenfor er koden som vil sortere regnearkene i alfabetisk rekkefølge så snart du kjører 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). Navn) <UCase (Ark (i) .Name) Deretter Ark (j) .Flytt før: = Ark (i) Slutt hvis neste j Neste i Application.ScreenUpdating = True End Sub

Ovenstående er en enkel kode som brukes til For Next loops for å analysere hvert regneark mot alle regnearkene.

Den sammenligner navnet på et regneark med alle regnearkene og flytter det basert på navnet i alfabetisk rekkefølge.

Den går deretter videre til neste regneark og kontrollerer den deretter mot alle regnearkene.

Denne prosessen gjentas for alle regnearkene, og det endelige resultatet er en rekkefølge av regneark sortert i alfabetisk rekkefølge.

Noen viktige ting å vite om denne koden:

  1. UCase -funksjonen brukes til å sikre at små og store bokstaver ikke blir behandlet annerledes.
  2. Verdien av Application.ScreenUpdating er satt til False i begynnelsen av koden og endret til True på slutten av koden. Dette sikrer at mens koden kjører, ser du den ikke skje på skjermen. Dette hjelper også med å øke hastigheten på kodeutførelsen.

Hvis du vil sortere regneark i en synkende rekkefølge, trenger du bare å endre (større enn) -tegnet.

Koden nedenfor vil sortere regnearkene i synkende rekkefølge:

'Denne koden vil sortere regnearkene alfabetisk 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) .Flytt før: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Du kan også gi brukeren muligheten til å velge om han/hun vil sortere i stigende/synkende rekkefølge.

Koden nedenfor viser en meldingsboks, og brukeren kan velge rekkefølgen som skal sorteres.

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox ("Velg Ja for stigende rekkefølge og Nei for synkende rekkefølge", vbYesNoCancel) ShCount = Sheet.C i = 1 Til ShCount - 1 For j = i + 1 To ShCount If SortOrder = vbYes Then If UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) Then Sheets (j) .Flytt før: = Ark (i) End If End If Next j Next i Application.ScreenUpdating = True End Sub

Koden ovenfor viser en melding som vist nedenfor når den kjøres. Den sorterer basert på valget (Ja for stigende og Nei for synkende).

Hvis du klikker Avbryt, stopper koden og ingenting skjer.

Merk: Sorteringen kan ikke angres. Hvis du også vil beholde den opprinnelige bestillingen, må du lage en kopi av arbeidsboken.

Et forsiktig ord: Koden ovenfor fungerer i de fleste tilfeller. Et område der det vil gi deg feil resultat er når du har fanenavn som Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. Ideelt sett vil du at alle fanene for de samme årene skal være sammen, men det blir ikke gjort ettersom Q12021-2022 vil bli plassert før Q22021-2022.

Hvor å plassere VBA -koden

Excel har en VBA -backend kalt VBA -redaktøren.

Du må kopiere og lime inn VBA -koden i VB Editor -modulvinduet.

Her er trinnene for å gjøre dette:

  1. Klikk på "Utvikler" -fanen. (Kan du ikke se utviklerfanen? Klikk her for å lære hvordan du får den).
  2. Klikk på Visual Basic -alternativet. Dette vil åpne VB -redaktøren i backend.
  3. I Project Explorer-ruten i VB Editor, høyreklikker du på et hvilket som helst objekt for arbeidsboken der du vil sette inn koden. (Hvis du ikke ser Project Explorer, gå til "View" -fanen og klikk på "Project Explorer".)
  4. Gå til Sett inn og klikk på Modul. Dette vil sette inn et modulobjekt for arbeidsboken din.
  5. Kopier og lim inn koden i modulvinduet.

Slik kjører du VBA -koden

I Excel er det forskjellige måter å kjøre VBA -koden på.

Du kan kjøre koden rett fra Visual Basic Editor (også kalt VB Editor).

Du kan sette inn en knapp eller en figur i regnearket og tilordne makroen til den. Når du klikker på knappen, kjører den makroen umiddelbart.

Du kan også legge til makroen på verktøylinjen for hurtig tilgang (QAT). Når du må sortere regnearkfanene, kan du bare klikke på makrokodeikonet i QAT.

Du kan lese alt om hvordan du kjører makroen her - Slik kjører du en makro i Excel (eller se videoen nedenfor).
Du kan også like følgende Excel/VBA -opplæringsprogrammer:

  • Slik sorterer du data i Excel ved hjelp av VBA.
  • Sorter data automatisk i alfabetisk rekkefølge ved hjelp av formel.
  • Hvordan sortere data på flere nivåer i Excel.
  • En introduksjon til Excel Datasorteringsalternativer.
  • Excel VBA Autofilter: En komplett guide med eksempler
  • Hvordan gruppere regneark i Excel
  • Slik vender du data i Excel
wave wave wave wave wave