Sådan sorteres regneark i Excel ved hjælp af VBA (alfabetisk)

Hvis du arbejder med mange regneark i Excel, ved du, at styringen af ​​det kan blive et problem.

Når du har mere end et par regneark, skal du arrangere disse manuelt.

Hvor let ville det være, hvis der havde været en måde til hurtigt at sortere regnearkene i Excel.

Selvom der ikke er nogen indbygget funktion til at gøre dette, kan det gøres (let) ved hjælp af VBA.

I denne vejledning giver jeg dig koden og de nøjagtige trin, du skal følge for at sortere regneark i Excel.

Du kan justere koden for at sortere regnearkene i stigende eller faldende rækkefølge.

VBA -kode til at sortere regneark i Excel

Nedenfor er koden, der sorterer regnearkene i alfabetisk rækkefølge, så snart du kører det.

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 (Sheets (i) .Name) Herefter Sheets (j). Flyt før: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Ovenstående er en simpel kode, der bruges til For Next loops til at analysere hvert regneark mod alle regnearkene.

Det sammenligner navnet på et regneark med alle regnearkene og flytter det baseret på dets navn i alfabetisk rækkefølge.

Det går derefter videre til det næste regneark og kontrollerer det derefter mod alle regnearkene.

Denne proces gentages for alle regnearkene, og det endelige resultat er en rækkefølge af regneark sorteret i en alfabetisk rækkefølge.

Et par vigtige ting at vide om denne kode:

  1. UCase -funktion bruges til at sikre, at små og store bogstaver ikke behandles forskelligt.
  2. Værdien af ​​Application.ScreenUpdating sættes til Falsk i begyndelsen af ​​koden og ændres til Sand i slutningen af ​​koden. Dette sikrer, at mens koden kører, ser du den ikke ske på skærmen. Dette hjælper også med at fremskynde kodeudførelsen.

Hvis du vil sortere regneark i en faldende rækkefølge, skal du kun ændre (større end) -tegnet.

Nedenstående kode ville sortere regnearkene i faldende rækkefølge:

'Denne kode sorterer 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 Hvis UCase (Sheets (j) .Name)> UCase (Sheets (i) .Name) Herefter Sheets (j) .Flyt før: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Du kan også give brugeren mulighed for at vælge, om han/hun vil sortere i stigende/faldende rækkefølge.

Nedenstående kode viser en meddelelsesboks, og brugeren kan vælge den rækkefølge, der skal sorteres.

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox ("Vælg Ja for stigende rækkefølge og Nej for faldende rækkefølge", vbYesNoCancel) ShCount = Sheets.C i = 1 Til ShCount - 1 For j = i + 1 Til ShCount Hvis SortOrder = vbJa Så hvis UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) Herefter Sheets (j) .Flyt før: = Sheets (i) End If End If Next j Next i Application.ScreenUpdating = True End Sub

Ovenstående kode, når den udføres, viser en meddelelse som vist nedenfor. Det sorterer baseret på markeringen (Ja for stigende og Nej for faldende).

Hvis du klikker på Annuller, stopper koden, og der sker ikke noget.

Bemærk: Sorteringen kan ikke fortrydes. Hvis du også vil beholde den originale ordre, skal du lave en kopi af projektmappen.

Bemærk: Ovenstående kode fungerer i de fleste tilfælde. Et område, hvor det vil give dig det forkerte resultat, er når du har fanenavne som f.eks. Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. Ideelt set vil du gerne have, at alle fanerne i de samme år er sammen, men det bliver ikke gjort, da Q12021-2022 vil blive placeret før Q22021-2022.

Hvor skal man placere VBA -koden

Excel har en VBA -backend kaldet VBA -editoren.

Du skal kopiere og indsætte VBA -koden i vinduet VB Editor -modulkode.

Her er trinene til at gøre dette:

  1. Klik på fanen 'Udvikler'. (Kan du ikke se fanen udvikler? Klik her for at lære, hvordan du får det).
  2. Klik på indstillingen Visual Basic. Dette åbner VB -editoren i backend.
  3. Højreklik på et objekt til projektmappen, hvor du vil indsætte koden, i ruden Project Explorer i VB Editor. (Hvis du ikke kan se Project Explorer, skal du gå til fanen 'View' og klikke på 'Project Explorer'.)
  4. Gå til Indsæt og klik på Modul. Dette vil indsætte et modulobjekt til din projektmappe.
  5. Kopier og indsæt koden i modulvinduet.

Sådan køres VBA -koden

I Excel er der forskellige måder at køre VBA -koden på.

Du kan køre koden lige fra Visual Basic Editor (også kaldet VB Editor).

Du kan indsætte en knap eller en figur i regnearket og tildele makroen til den. Når du klikker på knappen, kører den makroen med det samme.

Du kan også tilføje makroen til værktøjslinjen Hurtig adgang (QAT). Når du nu skal sortere regnearkfanerne, kan du bare klikke på makrokodeikonet i QAT.

Du kan læse alt om at køre makroen her - Sådan køres en makro i Excel (eller se videoen herunder).
Du kan også lide følgende Excel/VBA -selvstudier:

  • Sådan sorteres data i Excel ved hjælp af VBA.
  • Sorter automatisk data i alfabetisk rækkefølge ved hjælp af formel.
  • Sådan foretages en datasortering på flere niveauer i Excel.
  • En introduktion til Excel Datasorteringsindstillinger.
  • Excel VBA Autofilter: En komplet vejledning med eksempler
  • Sådan grupperes regneark i Excel
  • Sådan vendes data i Excel
wave wave wave wave wave