Excel VBA Sort

Der er forskellige måder at sortere dataene i Microsoft Excel. Der er et sorteringsikon under fanebåndet Excel Data, hvorfra du kan sortere dine data på en jippy og få resultaterne. Hvorfor er det nødvendigt at skrive den komplekse VBA-kode da?

Du skal have det i dit sind hver gang, VBA-koder er der for at automatisere tingene. Antag, at du har en data, der bliver opdateret af og til. Måske hver dag, ugentlig, månedlig osv., Og du har brug for dine data på en bestemt sorteret måde. I sådanne tilfælde kan VBA SORT-funktion bruges og kommer ud som et praktisk værktøj til din reference.

VBA har en Range.Sort-metode til at sortere dataene for dig. Hvor Range specificerer det område af celler, som vi vil sortere i stigende eller faldende rækkefølge.

Syntaks for Range.Sort er som angivet nedenfor:

Hvor,

  • Nøgle - kolonne / rækkevidde, du skal sortere. Eks. Hvis du vil sortere celler A1: A10, skal du nævne Range (A1: A10)
  • Ordre - Dette er den parameter, der giver dig mulighed for at sortere dataene i stigende eller faldende rækkefølge.
  • Header - Dette er den parameter, der specificerer, om din kolonne / række har overskrifter eller ej.

Disse tre parametre er nok til vores procedure. Der er dog nogle andre parametre som MatchCase, SortMethod osv., Som du altid kan udforske og se, hvordan de fungerer.

Sådan bruges Excel VBA sorteringsfunktion?

Vi lærer, hvordan VBA Sort kan bruges til at sortere kolonnen uden overskrifter, en kolonne med overskrifter og Flere kolonner med eksempler i Excel.

Du kan downloade denne VBA Sort Excel-skabelon her - VBA Sort Excel-skabelon

VBA sorteringsfunktion - eksempel # 1

Sortering af en enkelt kolonne uden overskrift

Antag, at du har en kolonne med navne som vist nedenfor, og alt hvad du behøver er at sortere disse data alfabetisk i stigende eller faldende rækkefølge.

Følg nedenstående trin for at bruge Sort-funktion i VBA.

Trin 1: Definer en ny sup-procedure under et modul og opret en makro.

Kode:

 Sub SortEx1 () End Sub 

Trin 2: Brug Range.Sort-funktion for at kunne sortere denne kolonne i stigende rækkefølge.

Kode:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort End Sub 

Her giver du interval fra celle A1 til den sidst anvendte / ikke-tomme celle (se funktionen. Ende (xlDown)) til Range.Sort-funktion.

Trin 3: Indtast nu argumentværdierne.

Kode:

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

Som vi har diskuteret tidligere, er nøgle, orden og overskrift de vigtige og nødvendige argumenter, der skal fremføres. Vi har givet rækkevidde (“A1”) som det kolonne-startområde, som vi skal sortere. Ordren leveres som Stigende og Header som Nej (Hvilket betyder, at kolonnen ikke har overskrift).

Denne kode vil kontrollere for alle ikke-tomme celler, der starter fra A1 og derefter sortere dem i stigende rækkefølge fra celle A1.

Trin 4: Kør denne kode ved at trykke på F5 eller Run-knappen manuelt og se output.

Hvis du kan sammenligne dette med billedet i starten af ​​dette eksempel, kan du se, at navnene sorteres i stigende rækkefølge.

VBA sorteringsfunktion - eksempel # 2

Sortering af en enkelt kolonne med overskrift

Antag, at du har en kolonne med overskriften som vist nedenfor. Og du ville sortere denne kolonne i stigende eller faldende rækkefølge.

Følg nedenstående trin for at bruge Sort-funktion i VBA.

Trin 1: Definer en ny underprocedure under en ny model til lagring af makroen.

Kode:

 Sub SortEx2 () End Sub 

Trin 2: Brug ark ("eksempel # 2") til at specificere, hvilket ark dine data er.

Kode:

 Sub SortEx2 () Sheets ("Eksempel # 2") End Sub 

Trin 3: Brug rækkevidde (“A1”). Sorter foran ovenstående kodelinje for at gøre det til en sorteringsfunktion.

Kode:

 Sub SortEx2 () Sheets ("Eksempel # 2"). Range ("A1"). Sort End Sub 

Trin 4: Giv Key1 som Range (“A1”) til at sortere dataene fra celle A1, Order1 for at sortere dataene i stigende eller faldende rækkefølge og Header som Ja for at lade systemet vide, at den første række er overskrift i din data.

Kode:

 Sub SortEx2 () Ark ("Eksempel # 2"). Område ("A1"). Sorteringsnøgle1: = Område ("A1"), Orden1: = xlAscending, Header: = xlYes End Sub 

Trin 5: Kør denne kode ved at trykke på F5 eller Run-knappen manuelt og se output.

Her sorteres dataene fra eksempel nr. 2 i en given Excel-arbejdsbog i stigende rækkefølge, da de har en overskrift. Hvilket betyder, at mens du sorterer disse data, forsømmes den første række (som indeholder Emp-navn ), fordi den betragtes som en overskrift for disse data i kolonne A.

Du kan også sortere de samme data i faldende rækkefølge af alfabeter. Alt hvad du skal gøre er at ændre rækkefølgen fra stigende til faldende.

Trin 6: Skift rækkefølge1 til faldende for at sortere dataene i faldende rækkefølge.

Kode:

 Sub SortEx2 () Ark ("Eksempel # 2"). Område ("A1"). Sorteringsnøgle1: = Område ("A1"), Orden1: = xlDescending, Header: = xlYes End Sub 

Trin 7: Kør koden, og se et output som givet nedenfor.

Du kan se, at dataene er sorteret i faldende rækkefølge.

VBA sorteringsfunktion - eksempel # 3

Sortering af flere kolonner med overskrifter

Indtil nu har vi dækket, hvordan man sorterer en enkelt kolonnedata i stigende eller faldende rækkefølge (uden header og med header). Hvad hvis du har data, som du skal sortere baseret på flere kolonner? Er det muligt at skrive en kode for det samme?

Svaret er, "Ja, det kan helt sikkert gøres!"

Antag, at du har data som angivet nedenfor:

Du ville sortere disse data først efter Emp Navn og derefter efter Placering. Følg nedenstående trin for at se, hvordan vi kan kode det i VBA.

Trin 1: Definer en ny underprocedure for at tilføje en makro under et nyt modul.

Kode:

 Sub SortEx3 () End Sub 

Trin 2: Brug en With… End With- sætning til at tilføje flere sorteringsbetingelser i en enkelt loop.

Kode:

 Sub SortEx3 () Med ActiveSheet.Sort End Sub 

Trin 3: Brug nu SortFields.Tilføj til at tilføje de flere sorteringsbetingelser i det samme regneark.

Kode:

 Sub SortEx3 () Med ActiveSheet.Sort .SortFields.Add-nøgle: = Range ("A1"), rækkefølge: = xlAscending .SortFields.Add Key: = Range ("B1"), rækkefølge: = xlAscending End Sub 

Trin 4: Bestem arkområdet, der skal sorteres, og overskrift I næste trin.

Kode:

 Sub SortEx3 () Med ActiveSheet.Sort .SortFields.Tilføj nøgle: = Range ("A1"), rækkefølge: = xlAscending .SortFields.Add Key: = Range ("B1"), rækkefølge: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes End Sub 

Trin 5: Brug .Anvend til at anvende alle disse ting under med udsagn og luk loopskrivingen End With.

Kode:

 Sub SortEx3 () Med ActiveSheet.Sort .SortFields.Tilføj nøgle: = Range ("A1"), rækkefølge: = xlAscending .SortFields.Add Key: = Range ("B1"), rækkefølge: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes. Anvend slut med slut-sub 

Trin 6: Kør denne kode ved at trykke på F5 eller Run-knappen manuelt og se Output.

I denne kode hjælper ActiveSheets.Sort systemet med at identificere det ark, under hvilket data skal sorteres. SortFields.Add giver mulighed for at tilføje to sorteringsbetingelser med deres rækkefølge (Stigende i begge tilfælde). SetRange giver systemet mulighed for at indstille intervallet fra A1 til C13. Du kan også flytte dette interval. Anvend sætninger giver systemet mulighed for at anvende alle de ændringer, der er foretaget i With loop.

Endelig får du de data, der er sorteret baseret på Emp navn først og derefter efter placering.

Ting at huske

  • Under VBA Sort kan du oprette navngivne intervaller i stedet for cellehenvisninger og bruge det samme. Eks. Hvis du har oprettet det navngivne interval for celle A1: A10 som "EmpRange", kan du bruge det under Range.Sort som Range ("EmpRange").
  • Du kan sortere dataene i stigende såvel som i faldende rækkefølge, som dem i excel.
  • Hvis du ikke er sikker på, om dine data har en header eller ej, kan du bruge xlGuess under afsnittet Header til at lade systemet gætte, om den første datalinje er en header eller ej.

Anbefalede artikler

Dette har været en guide til Excel VBA Sort. Her diskuterede vi VBA Sort og hvordan man bruger Excel VBA Sort Funktion sammen med praktiske eksempler og downloadbar excel skabelon. Du kan også gennemgå vores andre foreslåede artikler -

  1. Hurtig guide til Excel-sortering efter nummer
  2. Brug af VBA Match-funktion
  3. Sådan sorteres kolonne i Excel?
  4. VBA Mens Loop | MS Excel

Kategori: