Excel VBA Sort

Det finns olika sätt att sortera data i Microsoft Excel. Det finns en sorteringsikon under flikbandet Excel-data där du kan sortera dina data på ett vits och få resultaten. Varför finns det behov att skriva den komplexa VBA-koden då?

Du måste ha det i åtanke varje gång, VBA-koder finns där för att automatisera saker och ting. Anta att du har en data som uppdateras då och då. Kanske varje dag, vecka, månad, etc. och du behöver dina data på ett specifikt sorterat sätt. I sådana fall kan VBA SORT-funktion användas och kommer att vara ett praktiskt verktyg för din referens.

VBA har en Range.Sort-metod för att sortera informationen åt dig. Där intervall anger intervallet med celler som vi vill sortera i stigande eller fallande ordning.

Syntaxen för Range.Sort anges nedan:

Var,

  • Nyckel - Kolumn / intervall du behöver sortera. Ex. Om du vill sortera cellerna A1: A10, ska du nämna Range (A1: A10)
  • Order - Det här är den parameter som låter dig sortera data i stigande eller fallande ordning.
  • Header - Det här är den parameter som anger om din kolumn / intervall har rubriker eller inte.

Dessa tre parametrar räcker för vårt förfarande. Men det finns några andra parametrar som MatchCase, SortMethod, etc. som du alltid kan utforska och se hur de fungerar.

Hur använder jag Excel VBA sorteringsfunktion?

Vi kommer att lära dig hur VBA Sort kan användas för att sortera kolumnen utan rubriker, en kolumn med rubriker och flera kolumner med exempel i Excel.

Du kan ladda ner denna VBA Sort Excel-mall här - VBA Sort Excel-mall

VBA-sorteringsfunktion - exempel # 1

Sortering av en enda kolumn utan rubrik

Anta att du har en kolumn med namn som visas nedan och allt du behöver är att sortera dessa data alfabetiskt i stigande eller fallande ordning.

Följ stegen nedan för att använda sorteringsfunktionen i VBA.

Steg 1: Definiera en ny sup-procedur under en modul och skapa ett makro.

Koda:

 Sub SortEx1 () Slut Sub 

Steg 2: Använd Range.Sort-funktionen för att kunna sortera denna kolumn i stigande ordning.

Koda:

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

Här ger du intervall från cell A1 till den senaste använda / icke-tomma cellen (se funktionen. Änd (xlDown)) till Range.Sort-funktionen.

Steg 3: Ange nu argumentvärdena.

Koda:

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

Som vi har diskuterat tidigare är nyckel, ordning och rubrik de viktiga och nödvändiga argumenten som ska lämnas. Vi har gett Range (“A1”) som kolumnens startområde som vi behöver sortera. Order ges som stigande och rubrik som nej (vilket betyder att kolumnen inte har rubrik).

Den här koden kommer att kontrollera för alla celler som inte är tomma och börjar från A1 och sedan sortera dem i stigande ordning från cell A1.

Steg 4: Kör den här koden genom att slå F5 eller Run-knappen manuellt och se utgången.

Om du kan jämföra detta med bilden i början av detta exempel, kan du se att namn sorteras i stigande ordning.

VBA Sorteringsfunktion - Exempel # 2

Sortera en enda kolumn med rubrik

Anta att du har en kolumn med rubriken som visas nedan. Och du ville sortera denna kolumn i stigande eller fallande ordning.

Följ stegen nedan för att använda sorteringsfunktionen i VBA.

Steg 1: Definiera en ny delprocedur under en ny modell för att lagra makro.

Koda:

 Sub SortEx2 () Slut Sub 

Steg 2: Använd ark ("exempel # 2") för att ange vilket ark dina data är.

Koda:

 Sub SortEx2 () Sheets ("Exempel # 2") Slut Sub 

Steg 3: Använd Range (“A1”). Sortera framför ovanstående kodrad för att göra det till en sorteringsfunktion.

Koda:

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

Steg 4: Ange nyckel1 som räckvidd (“A1”) för att sortera data från cell A1, ordning1 för att sortera data i stigande eller fallande ordning och rubrik som ja för att låta systemet veta att första raden är rubrik i din data.

Koda:

 Sub SortEx2 () Sheets ("Exempel # 2"). Range ("A1"). Sorteringsknapp1: = Range ("A1"), Order1: = xlAscending, Header: = xlYes End Sub 

Steg 5: Kör den här koden genom att slå F5 eller Run-knappen manuellt och se utgången.

Här sorteras data från exempel 2 på en given Excel-arbetsbok i stigande ordning med tanke på att den har en rubrik. Vilket innebär att den första raden (som innehåller Emp-namn ) är försummad för att sortera dessa data eftersom den betraktas som en rubrik för dessa data i kolumn A.

Du kan också sortera samma data i fallande ordning av alfabet. Allt du behöver göra är att ändra ordningen från stigande till fallande.

Steg 6: Ändra ordning1 till fallande för att sortera data i fallande ordning.

Koda:

 Sub SortEx2 () Sheets ("Exempel # 2"). Range ("A1"). Sorteringsknapp1: = Range ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Steg 7: Kör koden och se en utgång enligt nedan.

Du kan se att data sorteras i fallande ordning.

VBA-sorteringsfunktion - exempel # 3

Sortera flera kolumner med rubriker

Hittills har vi täckt hur vi sorterar en enda kolumninformation i stigande eller fallande ordning (utan rubrik och med rubrik). Vad händer om du har data som du behöver sortera baserat på flera kolumner? Är det möjligt att skriva en kod för samma?

Svaret är: "Ja, det kan säkert göras!"

Anta att du har data enligt nedan:

Du ville sortera dessa data först efter Emp Name och sedan efter Location. Följ stegen nedan för att se hur vi kan koda det i VBA.

Steg 1: Definiera en ny delprocedur för att lägga till ett makro under en ny modul.

Koda:

 Sub SortEx3 () Slut Sub 

Steg 2: Använd ett med … Slut med uttalande för att lägga till flera sorteringsvillkor i en enda slinga.

Koda:

 Sub SortEx3 () Med ActiveSheet.Sort End Sub 

Steg 3: Använd nu SortFields.Tillsätt för att lägga till flera sorteringsvillkor i samma kalkylblad.

Koda:

 Sub SortEx3 () Med ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending End Sub 

Steg 4: Bestäm räckvidden som ska sorteras och rubriken i nästa steg.

Koda:

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

Steg 5: Använd .Applicera för att tillämpa alla dessa saker med med uttalande och stäng slingskrivningen End With.

Koda:

 Sub SortEx3 () Med ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlJa. Tillämpa slutet med slutet 

Steg 6: Kör den här koden genom att slå F5 eller Run-knappen manuellt och se Output.

I den här koden hjälper ActiveSheets.Sort systemet att identifiera det ark under vilket data ska sorteras. SortFields.Add gör det möjligt att lägga till två sorteringsvillkor med deras ordning (stigande i båda fallen). SetRange tillåter systemet att ställa in intervallet från A1 till C13. Du kan också flytta upp detta intervall. Använd uttalanden gör att systemet kan tillämpa alla ändringar som gjorts i With loop.

Slutligen får du data som sorteras baserat på Emp Name First och sedan efter Location.

Saker att komma ihåg

  • Under VBA Sort kan du skapa namngivna områden istället för cellreferenser och använda samma. Ex. Om du har skapat det namngivna intervallet för cell A1: A10 som "EmpRange", kan du använda det under Range.Sort like Range ("EmpRange").
  • Du kan sortera data i stigande såväl som i fallande ordning samma som i excel.
  • Om du inte är säker på om dina data har en rubrik eller inte, kan du använda xlGuess under avsnittet Header för att låta systemet gissa om den första raden med data är en rubrik eller inte.

Rekommenderade artiklar

Detta har varit en guide till Excel VBA Sort. Här diskuterade vi VBA Sort och hur man använder Excel VBA Sort Funktion tillsammans med praktiska exempel och nedladdningsbar Excel-mall. Du kan också gå igenom våra andra föreslagna artiklar -

  1. Snabbguide till Excel-sortering efter nummer
  2. Använda VBA Match-funktion
  3. Hur sorterar jag kolumnen i Excel?
  4. VBA While Loop | MS Excel

Kategori: