Excel VBA sorteren

Er zijn verschillende manieren om de gegevens in Microsoft Excel te sorteren. Er is een sorteerpictogram onder het tabblad Excel-gegevens waaruit u uw gegevens in een handomdraai kunt sorteren en de resultaten kunt krijgen. Waarom is het dan nodig om de complexe VBA-code te schrijven?

Je moet het elke keer in gedachten houden, VBA-codes zijn er om de dingen te automatiseren. Stel dat u gegevens hebt die zo nu en dan worden bijgewerkt. Misschien elke dag, wekelijks, maandelijks, enz. En u hebt uw gegevens op een specifieke gesorteerde manier nodig. In dergelijke gevallen kan de VBA SORT-functie worden gebruikt en komt deze uit als een handig hulpmiddel voor uw referentie.

VBA heeft een Range.Sort-methode om de gegevens voor u te sorteren. Waarbij Bereik geeft het cellenbereik aan dat we in oplopende of aflopende volgorde willen sorteren.

De syntaxis voor Range.Sort is als volgt:

Waar,

  • Sleutel - Kolom / bereik dat u moet sorteren. Ex. Als u cellen A1: A10 wilt sorteren, moet u Bereik (A1: A10) vermelden
  • Volgorde - Dit is de parameter waarmee u de gegevens in oplopende of aflopende volgorde kunt sorteren.
  • Koptekst - Dit is de parameter die aangeeft of uw kolom / bereik kopteksten heeft of niet.

Deze drie parameters zijn voldoende voor onze werkzaamheden. Er zijn echter enkele andere parameters zoals MatchCase, SortMethod, etc. die u altijd kunt verkennen en zien hoe ze werken.

Hoe de Excel VBA-sorteerfunctie te gebruiken?

We zullen leren hoe VBA Sort kan worden gebruikt om de kolom zonder kopteksten, een kolom met kopteksten en meerdere kolommen met excel-voorbeelden te sorteren.

U kunt deze VBA Sort Excel-sjabloon hier downloaden - VBA Sort Excel-sjabloon

VBA-sorteerfunctie - Voorbeeld # 1

Enkele kolom sorteren zonder koptekst

Stel dat u een kolom met namen hebt, zoals hieronder wordt weergegeven, en u hoeft deze gegevens alleen alfabetisch in oplopende of aflopende volgorde te sorteren.

Volg de onderstaande stappen om de sorteerfunctie in VBA te gebruiken.

Stap 1: Definieer een nieuwe sup-procedure onder een module en maak een macro.

Code:

 Sub SortEx1 () Einde Sub 

Stap 2: Gebruik de Range.Sort-functie om deze kolom in oplopende volgorde te kunnen sorteren.

Code:

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

Hier geeft u het bereik vanaf cel A1 tot de laatst gebruikte / niet-lege cel (zie de functie .End (xlDown)) tot de functie Range.Sort.

Stap 3: Voer nu de argumentwaarden in.

Code:

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

Zoals we eerder hebben besproken, zijn Key, Order en Header de belangrijke en noodzakelijke argumenten die moeten worden verstrekt. We hebben Bereik ("A1") opgegeven als het kolombeginbereik dat we moeten sorteren. Bestelling wordt opgegeven als Oplopend en Koptekst als Nee (wat betekent dat de kolom geen koptekst heeft).

Deze code controleert alle niet-lege cellen vanaf A1 en sorteert ze vervolgens in oplopende volgorde vanaf cel A1.

Stap 4: Voer deze code uit door handmatig op F5 of op de knop Run te drukken en de uitvoer te bekijken.

Als je dit kunt vergelijken met de afbeelding aan het begin van dit voorbeeld, kun je zien dat de namen in oplopende volgorde zijn gesorteerd.

VBA-sorteerfunctie - Voorbeeld # 2

Een enkele kolom met kop sorteren

Stel dat u een kolom hebt met de koptekst zoals hieronder weergegeven. En u wilde deze kolom in oplopende of aflopende volgorde sorteren.

Volg de onderstaande stappen om de sorteerfunctie in VBA te gebruiken.

Stap 1: Definieer een nieuwe subprocedure onder een nieuw model om de macro op te slaan.

Code:

 Sub SortEx2 () Einde Sub 

Stap 2: Gebruik Spreadsheets ("Voorbeeld # 2") om aan te geven welk blad uw gegevens bevatten.

Code:

 Sub SortEx2 () Sheets ("Voorbeeld # 2") Einde Sub 

Stap 3: Gebruik Bereik ("A1") Sorteer voor de bovenstaande coderegel om er een sorteerfunctie van te maken.

Code:

 Sub SortEx2 () Sheets ("Voorbeeld # 2"). Bereik ("A1"). Sort End End Sub 

Stap 4: Geef Key1 op als Bereik (“A1”) om de gegevens uit cel A1 te sorteren, Order1 om de gegevens in oplopende of aflopende volgorde te sorteren en Koptekst als Ja om het systeem te laten weten dat de eerste rij koptekst is in uw gegevens.

Code:

 Sub SortEx2 () Sheets ("Voorbeeld # 2"). Bereik ("A1"). Sorteringstoets1: = Bereik ("A1"), Order1: = xl Scannen, Koptekst: = xl Ja einde sub 

Stap 5: Voer deze code uit door handmatig op F5 of op de knop Run te drukken en de uitvoer te bekijken.

Hier worden de gegevens van voorbeeld # 2 van een gegeven Excel-werkmap gesorteerd in oplopende volgorde, gegeven dat het een kop heeft. Wat betekent dat tijdens het sorteren van deze gegevens de eerste rij (die Emp-naam bevat) wordt verwaarloosd omdat deze wordt beschouwd als een koptekst voor deze gegevens in kolom A.

U kunt ook dezelfde gegevens sorteren in aflopende volgorde van alfabetten. Het enige wat u hoeft te doen is de volgorde wijzigen van oplopend naar aflopend.

Stap 6: Wijzig volgorde1 in aflopend om de gegevens in aflopende volgorde te sorteren.

Code:

 Sub SortEx2 () Sheets ("Voorbeeld # 2"). Bereik ("A1"). Sorteringstoets1: = Bereik ("A1"), Order1: = xl Aflopend, Koptekst: = xl 

Stap 7: Voer de code uit en zie een uitvoer zoals hieronder aangegeven.

U kunt zien dat de gegevens zijn gesorteerd in aflopende volgorde.

VBA-sorteerfunctie - Voorbeeld # 3

Meerdere kolommen sorteren met kopteksten

Tot nu toe hebben we besproken hoe u gegevens in een enkele kolom in oplopende of aflopende volgorde kunt sorteren (zonder koptekst en met koptekst). Wat als u gegevens hebt die u moet sorteren op basis van meerdere kolommen? Is het mogelijk om een ​​code voor hetzelfde te schrijven?

Het antwoord is: "Ja, het is zeker mogelijk!"

Stel dat u gegevens hebt zoals hieronder aangegeven:

U wilde deze gegevens eerst sorteren op Emp-naam en vervolgens op locatie. Volg de onderstaande stappen om te zien hoe we het kunnen coderen in VBA.

Stap 1: Definieer een nieuwe subprocedure om een ​​macro toe te voegen onder een nieuwe module.

Code:

 Sub SortEx3 () Einde Sub 

Stap 2: Gebruik een With… End With -instructie om meerdere sorteervoorwaarden in één lus toe te voegen.

Code:

 Sub SortEx3 () Met ActiveSheet.Sort End Sub 

Stap 3: Gebruik nu SortFields.Add om de meerdere sorteervoorwaarden aan hetzelfde werkblad toe te voegen.

Code:

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

Stap 4: Bepaal het te sorteren bladbereik en koptekst In de volgende stap.

Code:

 Sub SortEx3 () Met ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlJa Einde Sub 

Stap 5: Gebruik .Apply om al deze dingen onder met statement toe te passen en de lus te sluiten met End With.

Code:

 Sub SortEx3 () Met ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlJa. Toepassen met einde sub 

Stap 6: Voer deze code uit door handmatig op F5 of op de knop Run te drukken en de uitvoer te bekijken.

In deze code helpt ActiveSheets.Sort het systeem om het blad te identificeren waaronder gegevens moeten worden gesorteerd. SortFields.Add maakt het mogelijk om twee sorteervoorwaarden toe te voegen aan hun volgorde (in beide gevallen oplopend). Met SetRange kan het systeem het bereik instellen van A1 tot C13. U kunt dit bereik ook naar boven verplaatsen. Met statements toepassen kan het systeem alle wijzigingen die zijn aangebracht in de With-lus toepassen.

Ten slotte krijgt u de gegevens die zijn gesorteerd op basis van Emp Name First en vervolgens op Location.

Dingen om te onthouden

  • Onder VBA Sort kunt u benoemde bereiken maken in plaats van celverwijzingen en deze gebruiken. Ex. Als u het benoemde bereik voor cel A1: A10 hebt gemaakt als "EmpRange", kunt u dit gebruiken onder Range.Sort like Range ("EmpRange").
  • U kunt de gegevens zowel in oplopende als in aflopende volgorde sorteren als in Excel.
  • Als u niet zeker weet of uw gegevens een kop hebben of niet, kunt u xlGuess gebruiken onder Koptekst om het systeem te laten raden of de eerste gegevensregel een kop is of niet.

Aanbevolen artikelen

Dit is een handleiding voor Excel VBA Sort geweest. Hier hebben we VBA Sort besproken en het gebruik van de Excel VBA Sort-functie samen met praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -

  1. Snelle gids voor Excel Sorteren op nummer
  2. De VBA Match-functie gebruiken
  3. Hoe de kolom in Excel te sorteren?
  4. VBA While Loop | MS Excel

Categorie: