Ako radite s puno radnih listova u Excelu, znali biste da upravljanje njime može postati problem.
Nakon što imate više od nekoliko radnih listova, morate ih ručno rasporediti.
Kako bi jednostavno bilo da postoji način za brzo sortiranje radnih listova u Excelu.
Iako ne postoji ugrađen način za to, to se može učiniti (jednostavno) pomoću VBA.
U ovom vodiču ću vam dati kôd i točne korake koje morate slijediti za sortiranje radnih listova u Excelu.
Kôd možete prilagoditi za sortiranje radnih listova uzlaznim ili silaznim redoslijedom.
VBA kôd za sortiranje radnih listova u Excelu
Ispod je kôd koji će sortirati radne listove po abecedi čim ga pokrenete.
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). Naziv) <UCase (Listovi (i). Naziv) Zatim Listovi (j). Premjesti prije: = Listovi (i) Kraj ako je sljedeći j Sljedeći i Aplikacija.ScreenUpdating = True End Sub
Gore navedeno je jednostavan kod koji koristi petlje Za sljedeće za analizu svakog radnog lista u odnosu na sve radne listove.
Uspoređuje naziv radnog lista sa svim radnim listovima i pomiče ga prema imenu prema abecednom redu.
Zatim prelazi na sljedeći radni list, a zatim ga provjerava prema svim radnim listovima.
Ovaj se postupak ponavlja za sve radne listove, a konačni rezultat je redoslijed radnih listova razvrstan po abecednom redu.
Nekoliko važnih stvari koje trebate znati o ovom kodu:
- UCase funkcija koristi se kako bi se osiguralo da se mala i velika slova ne tretiraju različito.
- Vrijednost Application.ScreenUpdating postavljena je na False na početku koda i promijenjena u True na kraju koda. To osigurava da dok je kôd pokrenut, nećete vidjeti da se to događa na ekranu. To također pomaže ubrzati izvršavanje koda.
Ako želite sortirati radne listove silaznim redoslijedom, trebate promijeniti samo znak (veći od).
Kod u nastavku razvrstao bi radne listove prema opadajućem redoslijedu:
'Ovaj kôd razvrstit će radne listove po abecednom redu 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 Ako je UCase (Sheets (j) .Name)> UCase (Sheets (i) .Name) Zatim Sheets (j) .Prijemjesti prije: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub
Korisniku također možete dati mogućnost izbora da li želi sortirati uzlazno/silazno.
Kod u nastavku prikazao bi okvir s porukom i korisnik može odabrati redoslijed za sortiranje.
Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder Kao VbMsgBoxResult SortOrder = MsgBox ("Odaberite Da za rastući redoslijed i Ne za opadajući redoslijed", vbYesContont) i = 1 Za ShCount - 1 Za j = i + 1 Za ShCount Ako je SortOrder = vbDa Tada If UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) Zatim Sheets (j). Premjesti prije: = Sheets (i) Završi ako završi ako je sljedeće j Sljedeće i Application.ScreenUpdating = True End Sub
Gornji kod kada se izvrši prikazuje poruku kao što je prikazano u nastavku. Sortira na temelju odabira (Da za uzlazno i Ne za silazno).
U slučaju da kliknete Odustani, kôd prestaje i ništa se ne događa.
Bilješka: Razvrstavanje se ne može poništiti. U slučaju da želite zadržati i izvornu narudžbu, napravite kopiju radne knjige.
Riječ opreza: Gornji kôd funkcionira u većini slučajeva. Jedno područje na kojem će vam dati pogrešan rezultat jest kada imate nazive kartica kao što su Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. U idealnom slučaju, htjeli biste da sve kartice za iste godine budu zajedno, ali to se neće učiniti jer će se Q12021-2022 postaviti prije Q22021-2022.Gdje staviti VBA kod
Excel ima VBA pozadinu koja se naziva VBA editor.
Morate kopirati i zalijepiti VBA kôd u prozor koda modula VB Editor.
Evo koraka za to:
- Kliknite karticu "Developer". (Ne vidite karticu za razvojne programere? Kliknite ovdje da biste saznali kako je nabaviti).
- Pritisnite opciju Visual Basic. Ovo će otvoriti VB editor u pozadini.
- U oknu Project Explorer u VB Editoru desnom tipkom miša kliknite bilo koji objekt radne knjige u koji želite umetnuti kôd. (Ako ne vidite Project Explorer, idite na karticu "View" i kliknite na "Project Explorer".)
- Idite na Umetni i kliknite na Modul. Ovo će umetnuti objekt modula u vašu radnu knjigu.
- Kopirajte i zalijepite kôd u prozor modula.
Kako pokrenuti VBA kod
U Excelu postoje različiti načini za pokretanje VBA koda.
Kôd možete pokrenuti izravno iz programa Visual Basic Editor (koji se naziva i VB Editor).
Možete umetnuti gumb ili oblik u radni list i dodijeliti mu makronaredbu. Kada pritisnete gumb, makro će se odmah pokrenuti.
Makronaredbu možete dodati i na Alatnu traku za brzi pristup (QAT). Sada kad god morate sortirati kartice radnog lista, možete samo kliknuti ikonu koda makroa u QAT -u.
Ovdje možete pročitati sve o pokretanju makronaredbi - Kako pokrenuti makro u Excelu (ili pogledati video ispod).Možda će vam se svidjeti i sljedeći Excel/VBA vodiči:
- Kako sortirati podatke u Excelu pomoću VBA.
- Automatski sortirajte podatke po abecednom redu pomoću formule.
- Kako izvršiti sortiranje podataka na više razina u Excelu.
- Uvod u mogućnosti sortiranja podataka programa Excel.
- Excel VBA autofilter: Potpuni vodič s primjerima
- Kako grupirati radne listove u Excelu
- Kako okrenuti podatke u Excelu