Sortați foile de lucru într-un registru de lucru folosind VBA în Microsoft Excel

Anonim

În acest articol, am furnizat detalii despre cum să sortați foile de lucru din registrul de lucru în ordine crescătoare sau descendentă, în funcție de numele foii de lucru.

În registrul de lucru atașat, există două module: -

Modulul 1 conține macrocomanda „SortWorksheets” care este atribuită butonului „Trimiteți” din foaia „Macro”.

Această macrocomandă sortează toate foile de lucru, cu excepția primei foi de lucru, care este foaia principală denumită „Macro”.

Când utilizatorul face clic pe butonul „Trimiteți”, toate foile după foaia „Macro” vor fi sortate în ordine crescătoare sau descendentă, așa cum este ales de utilizator în caseta combinată.

Modulul 2 conține două macrocomenzi „AscendingSortOfWorksheets” și „DecendingSortOfWorksheets”. La executarea macro-ului „AscendingSortOfWorksheets”, acesta va sorta toate foile de lucru prezente în registrul de lucru în ordine crescătoare. La executarea macrocomenzii „DecendingSortOfWorksheets”, va sorta toate foile de lucru prezente în registrul de lucru în ordinea descrescătoare.

Explicație logică

Algoritmul de sortare cu bule este utilizat pentru sortarea foilor de lucru din registrul de lucru.

Algoritmul de sortare cu bule compară fiecare articol din matrice cu alt element din matrice și le schimbă în funcție de sortarea în ordine crescătoare sau descendentă. În fiecare etapă, va afișa cea mai mică sau cea mai mare valoare în partea de sus a matricei. Algoritmul se repetă până când toate elementele sunt sortate.

În acest articol, obiectivul nostru este să sortăm foile de lucru din registrul de lucru după numele lor. Cartea de lucru pe care o folosim este formată din diferite foi de lucru cu nume precum tabloul de bord financiar, resursele umane și tabloul de bord pentru vânzări.

Pentru a atinge acest obiectiv, am folosit algoritmul de sortare Bubble pentru sortarea foilor de lucru.

Explicarea codului

Macro SortWorksheets

Această macrocomandă va rula atunci când utilizatorul face clic pe butonul de trimitere. Această macrocomandă va sorta toate foile de lucru din registrul de lucru după numele lor, cu excepția primei foi de lucru din registrul de lucru. În funcție de valoarea selectată de utilizator în caseta combinată, acesta va sorta foile de lucru în ordine crescătoare sau descendentă.

Pentru adăugarea casetei combinate, urmați pașii de mai jos: -

  1. Accesați fila Dezvoltator> Faceți clic pe Inserare> Faceți clic pe pictograma casetei combinate sub controlul formularului

  1. Faceți clic dreapta pe caseta combinată și faceți clic pe controlul formatului.

  1. Accesați fila de control, Alocați elementul și legați caseta combinată cu celula XFC1.

ComboBoxValue = Range ("XFC1"). Valoare

Caseta combinată din foaia de lucru „Macro” este legată de celula XFC1. Deci, pentru a obține valoare din celula XFC1, se utilizează variabila ComboBoxValue.

Pentru i = 2 To SCount - 1

Bucla FOR începe cu variabila i, valoarea începând de la 2 deoarece vrem să excludem prima sortare a foii de lucru a registrului de lucru.

Dacă ComboBoxValue = 1 Apoi

Condiția IF este utilizată pentru a verifica dacă se sortează în ordine crescătoare sau descendentă. Dacă valoarea ComboBoxValue este 1, atunci sortați în ordine crescătoare, altfel descendentă.

Fișe de lucru sortate în ordine crescătoare

Fișe de lucru sortate în ordine descrescătoare

AscendingSortOfWorksheets și DecendingSortOfWorksheets

AscendingSortOfWorksheets și DecendingSortOfWorksheets macro pot fi rulate apăsând tasta de comandă rapidă Alt + F8 sau Accesați fila Dezvoltator> Faceți clic pe Macro> selectând macro și faceți clic pe Executare. Vor sorta toate foile de lucru prezente în registrul de lucru. Aceste macrocomenzi pot fi rulate și pe alte registre de lucru.

Foi de lucru sortate după executarea macro AscendingSortOfWorksheets

Foi de lucru sortate în ordine crescătoare Macro DecendingSortOfWorksheets

Vă rugăm să urmați codul de mai jos

 Sub AscendingSortOfWorksheets () 'Sortează foile de lucru într-un registru de lucru în ordine crescătoare Dim SCount, i, j Ca număr întreg' Pentru dezactivarea actualizărilor de ecran Application.ScreenUpdating = False 'Obținerea numărului total. de foi de lucru în registrul de lucru SCount = Worksheets.Count 'Verificarea condiției dacă numărul de foi de lucru este mai mare de 1, dacă numărul este unul, apoi ieșiți din procedură Dacă SCount = 1 Apoi ieșiți din Sub' Utilizarea sortării cu bule ca algoritm de sortare 'Buclarea prin toate foile de lucru Pentru i = 1 Pentru SCount - 1 'Efectuarea unei comparații între numele foii selectate și alte foi pentru mutarea foii selectate în poziția adecvată Pentru j = i + 1 Pentru SCount Dacă foi de lucru (j).  Worksheets (i) .Name Then Worksheets (j) .Move Before: = Worksheets (i) End If Next j Next i End Sub 

Dacă ți-a plăcut acest blog, distribuie-l prietenilor tăi de pe Facebook. De asemenea, ne puteți urmări pe Twitter și Facebook.

Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți munca noastră și o putem îmbunătăți. Scrieți-ne pe site-ul de e-mail