Cum se sortează foile de lucru în Excel folosind VBA (alfabetic)

Dacă lucrați cu o mulțime de foi de lucru în Excel, ați ști că gestionarea acestuia poate deveni o problemă.

După ce aveți mai mult de câteva foi de lucru, trebuie să le aranjați manual.

Cât de ușor ar fi fost dacă ar fi existat o modalitate de a sorta rapid foile de lucru în Excel.

Deși nu există o modalitate încorporată de a face acest lucru, se poate face (ușor) folosind VBA.

În acest tutorial, vă voi oferi codul și pașii exacți pe care trebuie să îi urmați pentru a sorta foile de lucru în Excel.

Puteți modifica codul pentru a sorta foile de lucru într-o ordine crescătoare sau descendentă.

Cod VBA pentru a sorta foile de lucru în Excel

Mai jos este codul care va sorta foile de lucru într-o ordine alfabetică imediat ce o rulați.

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). Nume) <UCase (Sheets (i) .Name) Then Sheets (j) .Move before: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Cele de mai sus sunt un cod simplu care folosește buclele For Next pentru a analiza fiecare foaie de lucru cu toate foile de lucru.

Compară numele unei foi de lucru cu toate foile de lucru și o mută pe baza numelui acesteia în ordinea alfabetică.

Apoi trece la următoarea foaie de lucru și apoi o verifică cu toate foile de lucru.

Acest proces se repetă pentru toate foile de lucru și rezultatul final este o ordine a foii de lucru sortate în ordine alfabetică.

Câteva lucruri importante de știut despre acest cod:

  1. Funcția UCase este utilizată pentru a vă asigura că minusculele și majusculele nu sunt tratate diferit.
  2. Valoarea Application.ScreenUpdating este setată la False la începutul codului și modificată la True la sfârșitul codului. Acest lucru vă asigură că, în timp ce codul rulează, nu îl vedeți pe ecran. Acest lucru ajută și la accelerarea executării codului.

Dacă doriți să sortați foile de lucru într-o ordine descrescătoare, trebuie doar să schimbați semnul (mai mare decât).

Codul de mai jos ar sorta foile de lucru în ordine descrescătoare:

„Acest cod va sorta foile de lucru alfabetic Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count Pentru i = 1 To ShCount - 1 Pentru j = i + 1 To ShCount Dacă UCase (Sheets (j) .Name)> UCase (Sheets (i) .Name) Then Sheets (j). Mutare înainte: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

De asemenea, puteți oferi utilizatorului opțiunea de a alege dacă dorește să sorteze în ordine crescătoare / descendentă.

Codul de mai jos va afișa o casetă de mesaj, iar utilizatorul poate selecta comanda de sortat.

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox ("Selectați Da pentru Ordine Ascendentă și Nu pentru Ordine Descrescătoare", vbYesNoCancel) ShCount = SheCount = She = i = 1 To ShCount - 1 For j = i + 1 To ShCount If SortOrder = vbY Then If UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) Then Sheets (j). Mutare înainte: = Sheets (i) End If End If Next j Next i Application.ScreenUpdating = True End Sub

Când este executat, codul de mai sus arată un mesaj așa cum se arată mai jos. Se sortează în funcție de selecție (Da pentru Ascendent și Nu pentru Descendent).

În cazul în care faceți clic pe Anulare, codul se oprește și nu se întâmplă nimic.

Notă: Sortarea nu poate fi anulată. În cazul în care doriți să păstrați și comanda originală, faceți o copie a registrului de lucru.

Un cuvânt de precauție: Codul de mai sus funcționează în majoritatea cazurilor. Un domeniu în care vă va da rezultatul greșit este atunci când aveți nume de file precum Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. În mod ideal, ați dori ca toate filele pentru aceiași ani să fie împreună, dar nu se va face deoarece Q12021-2022 va fi plasat înainte de Q22021-2022.

Unde să puneți codul VBA

Excel are un backend VBA numit editor VBA.

Trebuie să copiați și să lipiți codul VBA în fereastra codului modulului VB Editor.

Iată pașii pentru a face acest lucru:

  1. Faceți clic pe fila „Dezvoltator”. (Nu vedeți fila dezvoltatorului? Faceți clic aici pentru a afla cum să o obțineți).
  2. Faceți clic pe opțiunea Visual Basic. Aceasta va deschide editorul VB în backend.
  3. În panoul Explorator de proiecte din Editorul VB, faceți clic dreapta pe orice obiect pentru registrul de lucru în care doriți să inserați codul. (Dacă nu vedeți Project Explorer, accesați fila „View” și faceți clic pe „Project Explorer”.)
  4. Accesați Insert și faceți clic pe Module. Aceasta va insera un obiect modul pentru registrul dvs. de lucru.
  5. Copiați și lipiți codul în fereastra modulului.

Cum se execută codul VBA

În Excel, există diferite moduri de a rula codul VBA.

Puteți rula codul chiar din Editorul Visual Basic (numit și Editor VB).

Puteți insera un buton sau o formă în foaia de lucru și îi puteți atribui macro-ul. Când faceți clic pe buton, acesta va rula macro instantaneu.

Puteți adăuga, de asemenea, macrocomanda la Bara de instrumente de acces rapid (QAT). Acum, ori de câte ori trebuie să sortați filele foii de lucru, puteți face clic pe pictograma codului macro din QAT.

Puteți citi totul despre rularea macro-ului aici - Cum să rulați o macro în Excel (sau să urmăriți videoclipul de mai jos).
Vă pot plăcea, de asemenea, următoarele tutoriale Excel / VBA:

  • Cum să sortați datele în Excel folosind VBA.
  • Sortați automat datele în ordine alfabetică folosind Formula.
  • Cum se face o sortare a datelor pe mai multe niveluri în Excel.
  • O introducere în opțiunile de sortare a datelor Excel.
  • Autofiltru Excel VBA: un ghid complet cu exemple
  • Cum să grupați foile de lucru în Excel
  • Cum să întoarceți datele în Excel

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave