Sortare Excel VBA

Există diferite modalități de sortare a datelor în Microsoft Excel. Există o pictogramă de sortare sub panglică fila Date Excel de unde puteți sorta datele într-un mod corect și obțineți rezultatele. De ce este nevoie să scriem codul VBA complex atunci?

Trebuie să vă țineți minte de fiecare dată, codurile VBA sunt acolo pentru a automatiza lucrurile. Să presupunem că aveți date care se actualizează din când în când. Poate în fiecare zi, săptămânal, lunar, etc. și aveți nevoie de datele dvs. într-un mod specific sortat. În astfel de cazuri, funcția VBA SORT poate fi utilizată și va ieși ca un instrument util pentru referința dvs.

VBA are o metodă Range.Sort pentru a sorta datele pentru dvs. Unde Range specifică gama de celule pe care dorim să le sortăm în ordine crescătoare sau descendentă.

Sintaxa pentru Range.Sort este prezentată mai jos:

Unde,

  • Tastă - Coloană / Interval pe care trebuie să le sortați. Ex. Dacă doriți să sortați celule A1: A10, ar trebui să menționați Interval (A1: A10)
  • Comanda - Acesta este parametrul care vă permite să sortați datele în ordine crescătoare sau descendentă.
  • Antet - Acesta este parametrul care specifică dacă coloana / intervalul dvs. are anteturi sau nu.

Acești trei parametri sunt suficienți pentru procedurile noastre. Cu toate acestea, există și alți parametri precum MatchCase, SortMethod, etc., pe care îi puteți explora și vedea întotdeauna cum funcționează.

Cum se utilizează funcția de sortare Excel VBA?

Vom afla cum se poate sorta VBA Sort pentru a sorta coloana fără anteturi, o coloană cu anteturi și mai multe coloane cu exemple în excel.

Puteți descărca acest șablon Excel de sortare VBA de aici - șablon de sortare VBA de Excel

Funcția de sortare VBA - Exemplul # 1

Sortarea unei singure coloane fără antet

Să presupunem că aveți o coloană cu nume așa cum se arată mai jos și tot ce aveți nevoie este să sortați aceste date în ordine alfabetică în ordine crescătoare sau descendentă.

Urmați pașii de mai jos pentru a utiliza funcția Sortare în VBA.

Pasul 1: Definiți o nouă procedură suplimentară sub un modul și creați o macrocomandă.

Cod:

 Sub SortEx1 () End Sub 

Pasul 2: Utilizați funcția Range.Sort pentru a putea sorta această coloană în ordine crescătoare.

Cod:

 Sub SortEx1 () Interval ("A1", Interval ("A1"). End (xlDown)). 

Aici dați intervalul începând de la celula A1 până la ultima celulă folosită / nepoluantă (vezi funcția .nd (xlDown)) pentru funcția Range.Sort.

Pasul 3: Acum, introduceți valorile argumentului.

Cod:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Key Key 1: = Range ("A1"), Order1: = xlAscending, Header: = xlNo End Sub 

După cum am discutat anterior, cheia, comanda și antetul sunt argumentele importante și necesare care trebuie furnizate. Am acordat Gama („A1”) ca interval de pornire a coloanei pe care trebuie să le sortăm. Comanda este furnizată ca Ascendent și antet ca Nu (ceea ce înseamnă că coloana nu are antet).

Acest cod va verifica dacă toate celulele care nu sunt goale încep de la A1 și apoi le vor ordona în ordine crescătoare începând de la celula A1.

Pasul 4: Rulați acest cod apăsând manual butonul F5 sau Run și vedeți ieșirea.

Dacă puteți compara acest lucru cu imaginea de la începutul acestui exemplu, puteți vedea că numele sunt sortate în ordine crescătoare.

Funcția de sortare VBA - Exemplul # 2

Sortarea unei singure coloane cu antet

Să presupunem că aveți o coloană cu antetul, așa cum se arată mai jos. Și ați dorit să sortați această coloană în ordine crescătoare sau descendentă.

Urmați pașii de mai jos pentru a utiliza funcția Sortare în VBA.

Pasul 1: Definiți o nouă sub-procedură sub un nou model pentru stocarea macro-ului.

Cod:

 Sub SortEx2 () End Sub 

Pasul 2: Folosiți foi („Exemplul # 2”) pentru a specifica ce foaie sunt datele dvs.

Cod:

 Fișe Sub SortEx2 () („Exemplu # 2”) 

Pasul 3: Utilizați Interval („A1”). Sortați în fața liniei de cod de mai sus pentru a face o funcție de sortare.

Cod:

 Fișe de sortare SubEx2 () ("Exemplu # 2"). Gama ("A1"). 

Pasul 4: Furnizați Key1 ca rază („A1”) pentru a sorta datele din celula A1, Order1 pentru a sorta datele în ordine crescătoare sau descendentă și antet ca Da pentru a anunța sistemul că primul rând este antet în dvs. date.

Cod:

 Fișe Sub SortEx2 () ("Exemplu # 2"). Gama ("A1"). Tasta de sortare1: = Interval ("A1"), Ordine1: = xlAscendere, Antet: = xlAde Sub final 

Pasul 5: Rulați acest cod apăsând manual butonul F5 sau Run și vedeți ieșirea.

Aici, datele din Exemplul # 2 din cartea de lucru excel dată sunt sortate în ordine crescătoare, având în vedere că are un antet. Ceea ce înseamnă că, în timp ce sortați aceste date, primul rând (care conține Emp Name ) este neglijat, deoarece este considerat ca antet pentru aceste date în coloana A.

De asemenea, puteți sorta aceleași date în ordinea descrescătoare a alfabetelor. Tot ce trebuie să faceți este să schimbați ordinea de la creștere la descrescător.

Pasul 6: Schimbați ordinea1 la descendent pentru a sorta datele în ordine descrescătoare.

Cod:

 Fișe de sortare SubEx2 () ("Exemplu # 2"). Gama ("A1"). Tasta de sortare1: = Interval ("A1"), Ordine1: = xlDescendent, Antet: = xlAde Sub 

Pasul 7: Rulați codul și vedeți o ieșire așa cum este dat mai jos.

Puteți vedea că datele sunt sortate în ordine descrescătoare.

Funcția de sortare VBA - Exemplul # 3

Sortarea mai multor coloane cu anteturi

Până acum, am abordat cum să sortăm datele unei singure coloane în ordine crescătoare sau descendentă (fără antet și cu antet). Ce se întâmplă dacă aveți date pe care trebuie să le sortați pe baza mai multor coloane? Este posibil să scrieți un cod pentru același lucru?

Răspunsul este: „Da, sigur se poate face!”

Să presupunem că aveți date așa cum sunt date mai jos:

Doriți să sortați aceste date mai întâi după numele Emp și apoi după locație. Urmați pașii de mai jos pentru a vedea cum îl putem codifica în VBA.

Pasul 1: Definiți o nouă sub-procedură pentru a adăuga o macrocomandă sub un nou modul.

Cod:

 Sub SortEx3 () End Sub 

Pasul 2: Utilizați o instrucțiune With… End With pentru a adăuga mai multe condiții de sortare într-o singură buclă.

Cod:

 Sub SortEx3 () cu ActiveSheet.Sort End Sub 

Pasul 3: Acum, utilizați SortFields.Add pentru a adăuga mai multe condiții de sortare în aceeași foaie de lucru.

Cod:

 Sub sortEx3 () cu ActiveSheet.Sort .SortFields.Add cheie: = Interval ("A1"), Comandă: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending End Sub 

Pasul 4: Decideți sortarea foilor care urmează să fie sortată și antetată în pasul următor.

Cod:

 Sub SortEx3 () Cu ActiveSheet.Sort .SortFields.Add cheie: = Interval ("A1"), Ordine: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes End Sub 

Pasul 5: Utilizați . Aplicați pentru a aplica toate aceste lucruri cu enunț și închideți scrierea de bucle End With.

Cod:

 Sub SortEx3 () cu ActiveSheet.Sort .SortFields.Add cheie: = Interval ("A1"), Ordine: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes. Aplică sfârșitul cu End Sub 

Pasul 6: Rulați acest cod apăsând manual butonul F5 sau Run și vedeți Ieșirea.

În acest cod, ActiveSheets.Sort ajută sistemul să identifice foaia sub care urmează să fie sortate datele. SortFields.Add permite adăugarea a două condiții de sortare cu comanda lor (crescând în ambele cazuri). SetRange permite sistemului să stabilească intervalul de la A1 la C13. Puteți muta și această gamă. Instrucțiuni Apply permite sistemului să aplice toate modificările aduse cu bucla.

În cele din urmă, veți obține datele care sunt sortate în funcție de Emp Name First și apoi de Locație.

Lucruri de amintit

  • Sub Sortare VBA, puteți crea intervale denumite în loc de referințe de celule și puteți utiliza același lucru. Ex. Dacă ați creat intervalul numit pentru celula A1: A10 ca „EmpRange”, îl puteți folosi sub Range.Sort ca Range („EmpRange”).
  • Puteți sorta datele în ordine crescătoare, precum și în ordine descrescătoare, la fel ca și în excel.
  • Dacă nu sunteți sigur dacă datele dvs. au un antet sau nu, puteți utiliza xlGuess în secțiunea Antet pentru a permite sistemului să ghicească dacă prima linie de date este o antet sau nu.

Articole recomandate

Acesta a fost un ghid pentru Sortarea Excel VBA. Aici am discutat Sortarea VBA și modul de utilizare a funcției de sortare Excel VBA, împreună cu exemple practice și șablon Excel descărcabil. De asemenea, puteți parcurge și alte articole sugerate -

  1. Ghid rapid pentru sortare Excel după număr
  2. Utilizarea funcției de meci VBA
  3. Cum să sortați coloana în Excel?
  4. VBA În timp ce buclă | MS Excel

Categorie: