Indholdsfortegnelse
Sådan sorterer du i Excel med VBA , skal du anvende Range.Sort metode. I denne artikel vil vi vise dig, hvordan du kan sortere kolonnen i Excel med Range.Sort metode til VBA .
Download arbejdsbog
Du kan downloade den gratis Excel-arbejdsbog til øvelser her.
Sortere kolonne med VBA.xlsm
Range.Sort metode i Excel VBA
Range.Sort metode i VBA sorterer et interval af værdier i Excel. Her Område er en objektvariabel, der angiver det område af celler, som vi ønsker at sortere i stigende eller faldende rækkefølge.
Nedenfor er de parametre, som du skal kende til, når du arbejder med denne metode.
Parameter | Krævet/ valgfri | Datatype | Beskrivelse |
---|---|---|---|
Nøgle | Valgfrit | Variant | Angiver det område eller den kolonne, hvis værdier skal sorteres. |
Bestil | Valgfrit | XlSortOrder | Angiver den rækkefølge, som sorteringen skal udføres i.
|
Overskrift | Valgfrit | XlYesNoGuess | Angiver, om den første række indeholder overskrifter eller ej.
|
4 metoder til implementering af VBA til at sortere kolonne i Excel
I dette afsnit vil du vide, hvordan du kan sortere en enkelt kolonne med og uden en overskrift , flere kolonner med og uden overskrifter og hvordan man sortere ved blot at dobbeltklikke på overskriften i en kolonne i Excel.
1. Embed VBA til at sortere en enkelt kolonne uden overskrift i Excel
Hvis du ønsker at sortere en enkelt kolonne i dit Excel-regneark med VBA kode, og følg derefter nedenstående trin.
Dette er vores kolonne, som vi vil sortere med VBA kode.
Trin:
- Tryk på Alt + F11 på dit tastatur eller gå til fanen Udvikler -> Visual Basic for at åbne Visual Basic-editor .
- I pop-up kodevinduet skal du på menulinjen klikke på Indsæt -> Modul .
- Kopier følgende kode, og indsæt den i kodevinduet.
Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Din kode er nu klar til at køre.
Her,
- Key1:=Range("B5") → Specificeret B5 for at lade koden vide, hvilken kolonne der skal sorteres.
- Order1:=xlAscending → Angav ordren som xlAscending for at sortere kolonnen i stigende rækkefølge. Hvis du vil sortere kolonnen i faldende rækkefølge, skal du skrive xlDescending i stedet.
- Overskrift:= xlNo → Da vores kolonne ikke har nogen overskrift, har vi angivet den med xlIngen mulighed.
- Tryk på F5 på dit tastatur eller på menulinjen vælge Kør -> Kør Sub/UserForm Du kan også bare klikke på lille Play-ikon i undermenulinjen for at køre makroen.
Du vil se, at din kolonne nu er sorteret i stigende orden .
Bemærk, at vi her har defineret dataområdet manuelt som Område("B5:B15") .
Hvis du vil ændre data ved at tilføje eller slette værdier, kan du implementere følgende kode, som automatisk opdateres på baggrund af cellerne i datasættet.
Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown))).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Bemærk, at i stedet for at definere området manuelt ved at Område("B5:B15") , har vi skrevet, Område( "B5", Range("B5"). End(xlDown))) .
Dette vil sortere kolonnen på baggrund af den sidst udfyldte celle i kolonnen. Hvis der er tomme celler, vil dataene kun blive taget i betragtning op til den første tomme celle.
Læs mere: VBA til at sortere en tabel i Excel (4 metoder)
2. Indsæt VBA-makro til at sortere en enkelt kolonne med overskrift
I det foregående afsnit havde vi et datasæt med en enkelt kolonne uden overskrift, men nu har vi a kolonne med en overskrift .
Denne gang skal vi lære at sortere den med VBA-makro .
Trin:
- På samme måde som før, åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Kopier følgende kode i kodevinduet, og indsæt den.
Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub
Din kode er nu klar til at køre.
Her,
- Key1:=Range("B5") → Specificeret B5 for at lade koden vide, hvilken kolonne der skal sorteres.
- Order1:=xlDescending → Denne gang vil vi sortere kolonnen i faldende rækkefølge, så angiv rækkefølgen som xlDescending .
- Overskrift:= xlYes → Da vores kolonne har en overskrift denne gang, har vi angivet den med xlJa mulighed.
- Kør denne kode, og du vil få den kolonne med overskrift sorteret i faldende rækkefølge .
Læs mere: Sådan sorteres ListBox med VBA i Excel (en komplet vejledning)
Lignende læsninger:
- Sådan sorteres IP-adresse i Excel (6 metoder)
- [Løst!] Excel-sortering virker ikke (2 løsninger)
- Sådan tilføjes sorteringsknappen i Excel (7 metoder)
- Sortering af områder ved hjælp af VBA i Excel (6 eksempler)
- Sådan sorteres efter navn i Excel (3 eksempler)
3. VBA-makro til sortering af flere kolonner med eller uden overskrift
Du kan også sortere flere kolonner i dit datasæt med VBA-kode.
Trin:
- Som tidligere vist, er åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Kopier følgende kode i kodevinduet, og indsæt den.
Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub
Din kode er nu klar til at køre.
Her,
.SortFields.Add Key:=Range("B4"), Order:=xlAscending
.SortFields.Add Key:=Range("C4"), Order:=xlAscending
Med disse to linjer definerer vi Celle B4 og C4 til at sortere de to kolonner, der er knyttet til dem på stigende rækkefølge .
Da vi har overskrifter i vores datasæt, har vi angivet Overskrift = xlYes , ellers ville vi have skrevet Overskrift = xlNo i koden.
- Kør denne kode, og du vil få den kolonner med overskrift sorteret i stigende orden .
4. Makro til at sortere data ved at dobbeltklikke på overskriften i Excel
Hvis du ønsker at sortere dataene nemt ved blot at ved at dobbeltklikke på overskriften , kan du gøre det med VBA kode.
Trin:
- Højreklik på på den fanen ark .
- Klik på på listen med de viste indstillinger på Se kode .
- Kodevinduet vises, kopier følgende kode og indsæt den der.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub End Sub
- Gem koden.
- Gå nu tilbage til det pågældende regneark, og hvis du dobbeltklik på overskrifterne vil du se, at kolonnerne omorganiseres.
Læs mere: Sådan sorterer og filtrerer du data i Excel (en komplet vejledning)
Ting at huske
- Du kan oprette et navngivet område og bruge det i stedet, når du overfører et område med cellehenvisninger i Sortere metoden. Hvis du f.eks. ønsker at sortere området A1:A10 , i stedet for at sende det hver gang i koden, kan du oprette et navngivet område af det, som f.eks. " SortRange " og bruge den sammen med Range.Sort metode som Range("SortRange") .
- Hvis du ikke er sikker på, om dit datasæt har overskrifter eller ej, kan du lade systemet bestemme det ved at bruge xlGuess parameter.
Konklusion
Denne artikel viste dig, hvordan du kan sortere kolonnen i Excel VBA Jeg håber, at denne artikel har været til stor gavn for dig. Du er velkommen til at spørge, hvis du har spørgsmål til emnet.