Kako razvrstiti delovne liste v Excelu z uporabo VBA (po abecedi)

Če delate z veliko delovnimi listi v Excelu, bi vedeli, da lahko upravljanje z njim postane problem.

Ko imate več kot nekaj delovnih listov, jih morate ročno urediti.

Kako enostavno bi bilo, če bi obstajal način za hitro razvrščanje delovnih listov v Excelu.

Čeprav za to ni vgrajene funkcije, je to mogoče (enostavno) z uporabo VBA.

V tej vadnici vam bom dal kodo in natančne korake, ki jih morate upoštevati za razvrščanje delovnih listov v Excelu.

Kodo lahko prilagodite in razvrstite delovne liste v naraščajočem ali padajočem vrstnem redu.

Koda VBA za razvrščanje delovnih listov v Excelu

Spodaj je koda, ki bo delovne liste razvrstila po abecednem vrstnem redu, takoj ko jih zaženete.

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). Ime) <UCase (Sheets (i) .Name) Potem Sheets (j) .Premakni se prej: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Zgoraj je preprosta koda, ki uporablja zanke For Next za analizo vsakega delovnega lista glede na vse delovne liste.

Primerja ime delovnega lista z vsemi delovnimi listi in ga premakne glede na njegovo ime po abecednem vrstnem redu.

Nato se premakne na naslednji delovni list in ga nato preveri glede na vse delovne liste.

Ta postopek se ponovi za vse delovne liste, končni rezultat pa je vrstni red delovnega lista, razvrščen po abecednem vrstnem redu.

Nekaj ​​pomembnih stvari, ki jih morate vedeti o tej kodi:

  1. Funkcija UCase se uporablja za zagotovitev, da se male in velike črke ne obravnavajo drugače.
  2. Vrednost Application.ScreenUpdating je na začetku kode nastavljena na False, na koncu kode pa se spremeni v True. To zagotavlja, da med izvajanjem kode tega ne vidite na zaslonu. To tudi pomaga pospešiti izvajanje kode.

Če želite razvrščati delovne liste v padajočem vrstnem redu, morate spremeniti samo znak (večje od).

Spodnja koda bi razvrstila delovne liste po padajočem vrstnem redu:

"Ta koda bo razvrstila delovne liste po abecednem redu Pod SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count For i = 1 Za ShCount - 1 Za j = i + 1 Za ShCount Če UCase (Sheets (j) .Name)> UCase (Sheets (i) .Name) Potem Sheets (j) .Premakni se pred: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Uporabniku lahko daste tudi možnost izbire, ali želi razvrstiti po naraščajočem/padajočem vrstnem redu.

Spodnja koda bi prikazala polje s sporočilom in uporabnik lahko izbere naročilo za razvrščanje.

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox ("Izberite Da za naraščajoči vrstni red in Ne za padajoč vrstni red", vbYesCoCount i = 1 Za ShCount - 1 Za j = i + 1 Za ShCount Če je SortOrder = vbYes Potem If UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) Potem Sheets (j). Premakni se prej: = Sheets (i) Konec Če Konec Če Naslednji j Naprej i Aplikacija.ScreenUpdating = True End Sub

Zgornja koda ob izvedbi prikaže sporočilo, kot je prikazano spodaj. Razvršča glede na izbiro (Da za naraščajoče in Ne za padajoče).

Če kliknete Prekliči, se koda ustavi in ​​nič se ne zgodi.

Opomba: Razvrščanja ni mogoče razveljaviti. Če želite ohraniti tudi izvirno naročilo, naredite kopijo delovnega zvezka.

Beseda previdnosti: Zgornja koda v večini primerov deluje. Eno področje, na katerem bo to povzročilo napačen rezultat, je, če imate imena zavihkov, kot so Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. V idealnem primeru bi želeli, da so vsi zavihki za ista leta skupaj, vendar to ne bo storjeno, saj bo Q12021-2022 postavljen pred Q22021-2022.

Kam vstaviti kodo VBA

Excel ima zaledje VBA, imenovano urejevalnik VBA.

Kodo VBA morate kopirati in prilepiti v okno kode modula VB Editor.

Tu so naslednji koraki:

  1. Kliknite zavihek »Razvijalec«. (Ne vidite zavihka za razvijalce? Kliknite tukaj, če želite izvedeti, kako ga dobiti).
  2. Kliknite možnost Visual Basic. To bo odprlo urejevalnik VB v zaledju.
  3. V podoknu Raziskovalec projektov v urejevalniku VB z desno tipko miške kliknite kateri koli predmet delovnega zvezka, v katerega želite vstaviti kodo. (Če ne vidite Raziskovalca, pojdite na zavihek »Pogled« in kliknite »Raziskovalec projektov«.)
  4. Pojdite na Vstavi in ​​kliknite Modul. S tem boste v svoj delovni zvezek vstavili objekt modula.
  5. Kodo kopirajte in prilepite v okno modula.

Kako zagnati kodo VBA

V Excelu obstaja več načinov za zagon kode VBA.

Kodo lahko zaženete neposredno iz urejevalnika Visual Basic (imenovan tudi urejevalnik VB).

Na delovni list lahko vstavite gumb ali obliko in mu dodelite makro. Ko kliknete gumb, se bo makro takoj zagnal.

Makro lahko dodate tudi v orodno vrstico za hitri dostop (QAT). Zdaj, ko morate razvrstiti zavihke delovnega lista, lahko preprosto kliknete ikono kode makra v QAT.

Vse o izvajanju makra si lahko preberete tukaj - Kako zagnati makro v Excelu (ali si oglejte spodnji videoposnetek).
Morda vam bodo všeč tudi naslednji vadnici Excel/VBA:

  • Kako razvrstiti podatke v Excelu z uporabo VBA.
  • Samodejno razvrstite podatke po abecednem vrstnem redu s formulo.
  • Kako narediti razvrščanje podatkov na več ravneh v Excelu.
  • Uvod v možnosti sortiranja podatkov programa Excel.
  • Samodejni filter Excel VBA: Popoln vodnik s primeri
  • Kako združiti delovne liste v Excelu
  • Kako obrniti podatke v Excelu
wave wave wave wave wave