Hoe bereik sorteren in vba?
Om een celbereik met VBA te sorteren, moet u de “SORT”-methode gebruiken, waarmee u een enkele sleutel (kolom) of meerdere sleutels (voor meerdere kolommen) kunt instellen om te sorteren. Ook kunt u instellen in welke volgorde (oplopend of aflopend) u wilt sorteren en kunt u opgeven of u een koptekst heeft of niet.
Sorteer een bereik met VBA
- Gebruik het bereikobject om het bereik op te geven dat u wilt sorteren.
- Typ een punt en voer de sorteermethode in.
- Geef de sleutel op die u wilt gebruiken om te sorteren.
- Stel de sorteervolgorde in.
- Vermeld of je een header hebt of niet.
Range("A1:A11").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Header:=xlYes
In de bovenstaande code gebruikte je het bereik A1:A11, en in de sorteermethode gebruikte je oplopende volgorde, waarbij je vermeldde dat je een header in het bereik hebt.
De sorteermethode van VBA begrijpen
Voordat u een macro schrijft om een bereik te sorteren, kunt u zich het beste verdiepen in de sorteermethode en de argumenten ervan begrijpen.
Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, _ Header, OrderCustom, MatchCase, Orientation, SortMethod, _ DataOption1, DataOption2, DataOption3)
Dit zijn de belangrijkste argumenten die je in het echte leven zult gebruiken.
- Sleutel : Hier moet u een cel definiëren waarvan u de kolom als sorteerbasis wilt gebruiken.
- Volgorde : Volgorde waarin u de kolom wilt sorteren (oplopend/aflopend).
- Header : Een constante om aan te geven of u al dan niet een header heeft of wilt dat VBA raadt.
Sorteer in aflopende volgorde
In de volgende code heb ik ‘xlDescending’ gebruikt om de bedragkolom in aflopende volgorde te sorteren.
Range("A1:A13").Sort Key1:=Range("A1"), _ Order1:=xlDescending, _ Orientation:=xlSortColumns
Meerdere kolommen (sleutels) gebruiken om te sorteren
U kunt ook meerdere kolommen gebruiken om een bereik te sorteren. Laten we een voorbeeld uit de onderstaande tabel nemen, waarin u meerdere vermeldingen heeft met namen en plaatsen van werknemers, en u moet sorteren op naam en plaats.
Hier is de code die je moet gebruiken:
Range("A1:C13").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Key2:=Range("B1"), _ Order1:=xlAscending, _ Header:=xlYes
Zoals je in de code kunt zien, heb je sleutel1 en sleutel2. In sleutel1 heb je de kolom met de naam van de medewerker, en in sleutel2 heb je de plaatskolom. Voor beide kolommen is de sorteervolgorde oplopend en zijn de kopteksten aanwezig.
Let op: U kunt dit gebruiken zoals elke kolom die u wilt gebruiken als basis voor het sorteren met behulp van sleutels en volgorde.
Het veranderen van de lotoriëntatie
Wanneer u normaal gesproken gegevens in Excel sorteert, kunt u standaard sorteren op basis van kolommen. Maar via de sorteeropties kunt u de sorteerrichting wijzigen van links naar rechts in plaats van van boven naar beneden.
Op dezelfde manier heb je een argument in de sorteermethode om de oriëntatie te wijzigen ( link ).
Range("A1:C13").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Orientation:=xlSortRows