Cuprins
Cunoașterea modului de sortare a intervalului folosind VBA în Excel este o economie de timp și de efort în calculele noastre zilnice. Deși Excel oferă o facilitate de sortare în mod implicit. Prin utilizarea funcției Interval.Sortare metoda , avem acces la mai mulți parametri pentru a sorta un set de date cu mai multe opțiuni decât de obicei.
Descărcați caietul de practică
Descărcați acest caiet de exerciții pentru a vă exercita în timp ce citiți acest articol.
Sortare interval în Excel.xlsmIntroducere în declarația Range.Sort în Excel VBA
Obiectiv : Pentru a sorta un interval de date dintr-o celulă.
Sintaxă:
expresie .Sort ( Cheia1 , Comanda1 , Cheia2 , Tip , Comandă2 , Cheia3 , Comanda3 , Antet , ComandăCustom , MatchCase , Orientare , SortMethod , DataOpțiune1 , DataOpțiune2 , DataOpțiune3 )
În acest caz, se va utiliza expresie reprezintă un Gama adică o celulă, un rând, o coloană, un rând sau o selecție de celule.
Argumente:
Trebuie să oferim trei principalii parametri pentru Interval.Sortare Metoda. Sunt...
Cheie - Intervalul de celule dintr-o singură coloană sau din mai multe coloane pe care trebuie să le sortăm.
Comandă - Specificați ordinea de sortare, fie ascendentă, fie descendentă.
Antet - Declară dacă coloanele care urmează să fie sortate au sau nu un antet.
6 Exemple de sortare a intervalului în Excel VBA
În acest articol, ca set de date, vom folosi o listă de nume de persoane cu data nașterii și vârsta lor. Vom aplica diferite metode pentru a sorta setul de date. Să parcurgem articolul și să exersăm pentru a stăpâni aceste metode.
1. Sortare interval cu o singură coloană utilizând Excel VBA
În acest exemplu, vom sortare oameni din cel mai vechi la cel mai tânăr Să urmăm pașii pentru a utiliza Gama . Sortare metoda care va sortare la Coloana de vârstă în ordine descrescătoare .
Pași:
- Mergeți la Fila Dezvoltator în Panglica Excel la click pe Visual Basic
- Apoi alegeți Opțiunea de modul de la fila Inserare pentru a deschide un modul nou .
Acum, vom pune codul nostru la sortare la Vârsta gama de coloane.
1.1 Coloană cu antet
Introduceți următorul cod în editorul de cod vizual.
Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub
Apăsați F5 sau faceți clic pe butonul Rulați pentru a executați codul.
Explicație:
În codul de mai sus, am pus-
Expresie (obiect Range)=Range("D4:D11"); la coloana de vârstă cu un antet în celula D4 și valori în D5:D11.
Key = Range("D4"); la cheie pentru sortare.
Order= xlDescending; așa cum dorim să sortare valorile din cea mai mare la cel mai mic am stabilit ordinea de sortare ca descrescător.
Antet =xlYes; În următoarea captură de ecran, putem vedea că set de date are un antet pentru fiecare dintre coloane.
1.2 Coloană fără antet
Introduceți următorul cod în editorul de cod vizual.
Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub
Apăsați F5 sau faceți clic pe butonul Rulați pentru a executați codul.
Explicație:
În codul de mai sus, am pus-
Expresie (obiect Range)=Range("D4:D10"); la coloana de vârstă fără un antet are valori în D4:D10.
Key = Range("D4"); la cheie pentru sortare.
Order= xlDescending; așa cum dorim să sortare valorile din cea mai mare la cel mai mic am stabilit ordinea de sortare ca descrescător.
Antet =xlNo; În următoarea captură de ecran, putem vedea că set de date nu are antet.
Conținut conex: Cum să sortați coloane în Excel fără a amesteca datele (3 moduri)
2. Utilizarea codului VBA pentru a sorta gama de coloane multiple în Excel
Pentru a afișa sortarea în coloane multiple , trebuie să modificați nostru set de date un pic. Noi introdus câteva nou rânduri În setul de date modificat, rândurile 7, 8, și 9 au același pentru valorile data nașterii și vârste dar trei nume diferite . Acestea nume sunt nu în orice comandă specifică de urcare sau de coborâre.
În acest exemplu, vom ordona numele în ordine crescătoare Să rulăm următorul cod în editorul Visual Basic:
Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub
Explicație:
În captura de ecran de mai sus, putem vedea că vârstele din coloana D sunt sortat în descrescător am adăugat încă doi parametri în codul nostru anterior.
Key2: =Range("B4") , tasta pentru a sorta numele.
Order2: =xlAscending , a comandă pentru scurtcircuitarea numelor .
Ca urmare, vedem că nume în rândurile 7, 8 și 9 sunt acum în ordine alfabetică sortate în ascendent comandă.
În următoarea captură de ecran, am schimbat valoare a Parametrul Order2 la sortare la nume în descrescător comandă.
Citește mai mult: Cum să sortați mai multe coloane în Excel (5 abordări rapide)
3. Faceți dublu clic pe antet pentru a sorta intervalul de coloane în Excel VBA
Funcția de sortare implicită a Excel nu permite să sortează valorile a unei coloane prin făcând dublu clic pe la antet de coloană Dar folosind codul VBA putem face acest lucru. Să ilustrăm această funcționalitate prin aplicarea următorului cod.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End If End Sub
În acest cod, am folosit Evenimentul BeforeDoubleClick la dezactivați dublarea obișnuită - click care este de a porni editare În cazul în care acest eveniment este în curs de desfășurare, dacă dublu - click pe oricare dintre anteturi de coloană sortează datele din coloane în ordine crescătoare .
Citește mai mult: VBA pentru a sorta coloana în Excel (4 metode)
Lecturi similare:
- Cum să adăugați butonul de sortare în Excel (7 metode)
- Sortarea listei unice în Excel (10 metode utile)
- Cum se utilizează funcția de sortare în Excel VBA (8 exemple adecvate)
- Sortarea duplicatelor în Excel (coloane și rânduri)
- Sortare aleatorie în Excel (Formule + VBA)
4. Sortarea intervalului de coloane pe baza culorii de fundal utilizând Excel VBA
Putem sorta un interval de celule într-o coloană pe pe care le culoare de fundal Pentru a face acest lucru, trebuie să adăugați a parametru numit SortOn care are un valoare xlSortOnCellColor Pentru a demonstra sortarea, mai întâi am stabilit diferite culori de fundal la rândurile de pe rândurile noastre set de date .
Apoi, în editorul de cod Visual Basic copie următorul cod și apăsați F5 pentru a o rula.
Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range Range("B4:D10") .Apply End With End Sub
În următoarea captură de ecran, putem vedea că set de date sortate pe baza culorii de fundal a acestora.
Explicație:
- În acest exemplu, am numit foaie de lucru " fundal ". Așadar, în cod, punem " fundal ", ca fiind numele foii de lucru active.
- Am stabilit B4 ca cheie și B4:D10 ca gama Codul va sorta datele pe baza cheii.
- Deoarece nu am specificat parametru de antet , codul se execută pentru valoarea implicită fără antet.
- Am stabilit comandă ca parametru ascendent, astfel încât a sortat datele de la valori mai mici la valori mai mari .
Citește mai mult: Cum să sortați după culoare în Excel (4 criterii)
5. Aplicați codul VBA pentru a sorta gama de coloane pe baza culorii fontului
Prin aplicarea codului VBA, putem sorta setul de date în funcție de culoarea fontului În primul rând, trebuie să culoare rânduri diferite pentru a ilustra exemplul.
Aplicați codul de mai jos pentru a sorta setul de date în funcție de culoarea fontului.
Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub
Explicație:
- În acest exemplu, am numit foaie de lucru " fontcolor ". Așadar, în cod, punem " fontcolor ", ca fiind numele foii de lucru active.
- Am stabilit B4 ca cheie și B4:D11 ca gama Codul va sorta datele pe baza cheii.
- În acest exemplu, am specificat, de asemenea, parametrul de antet ca fiind xlYes .
- Aici, am stabilit valoarea comandă ca parametru ascendent, astfel încât a sortat datele de la valori mai mici la valori mai mari .
- Valoarea indicatorului SortOn parametrul este
- The parametrul de orientare deține valoarea xlTopToBottom deoarece este obligatorie.
- Culoare pentru a sorta este în termeni RGB, care are o valoare de la 0 la 255 .
Citește mai mult: Cum să sortați două coloane în Excel pentru a se potrivi (atât pentru potrivire exactă, cât și pentru potrivire parțială)
6. Schimbarea orientării pentru sortarea intervalului de sortare utilizând Excel VBA
Utilizarea orientare putem schimba modul în care dorim să sortăm datele. În acest exemplu, avem transpus setul nostru de date pentru sortare it pe orizontală .
Să introducem următorul cod în editorul Visual Basic și să apăsăm F5 pentru a-l rula.
Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub
Iată-ne. sortat datele bazate pe rândul de vârstă în ascendent comanda din stânga la dreapta În cod, am stabilit valoarea orientare ca parametru xlSortRows .
Conținut conex: Cum să sortați automat mai multe coloane în Excel (3 moduri)
Lucruri de reținut
- The Parametrul SortOn pe care le foloseam pentru a sortare interval de coloane bazat pe culoare de fundal și culoarea fontului poate fi utilizat numai de către un obiect foaie de lucru Nu o putem folosi cu un obiect de gamă .
- The Evenimentul BeforeDoubleClick sortează datele numai în ascendent.
Concluzie
Acum, știm cum să sortăm intervalul folosind VBA în Excel. Sperăm că vă va încuraja să folosiți acest lucru cu mai multă încredere. Orice întrebări sau sugestii nu uitați să le puneți în caseta de comentarii de mai jos.