Innehållsförteckning
Sortera i Excel med VBA måste du tillämpa Range.Sort metoden. I den här artikeln visar vi hur man kan sortera kolumnen i Excel med Range.Sort metod för att VBA .
Ladda ner arbetsboken
Du kan ladda ner den kostnadsfria Excel-arbetsboken för övningar här.
Sortera kolumnen med VBA.xlsm
Range.Sort-metoden i Excel VBA
Range.Sort metod i VBA sorterar ett intervall av värden i Excel. Här Utbud är en objektsvariabel som anger det område av celler som vi vill sortera i stigande eller fallande ordning.
Nedan finns de parametrar som du behöver känna till när du arbetar med denna metod.
Parameter | Obligatoriskt/ frivilligt | Datatyp | Beskrivning |
---|---|---|---|
Nyckel | Valfritt | Variant | Anger intervallet eller kolumnen vars värden ska sorteras. |
Beställ | Valfritt | XlSortOrder | Anger i vilken ordning sorteringen ska utföras.
|
Rubrik | Valfritt | XlYesNoGuess | Anger om den första raden innehåller rubriker eller inte.
|
4 metoder för att implementera VBA för att sortera kolumnen i Excel
I det här avsnittet får du veta hur du kan sortera en enda kolumn med och utan rubrik , flera kolumner med och utan rubriker och hur man sortera bara genom att dubbelklicka på rubriken i en kolumn i Excel.
1. Bädda in VBA för att sortera en enda kolumn utan rubrik i Excel
Om du vill sortera en enda kolumn i ditt Excel-arbetsblad med VBA kod och följ sedan nedanstående steg.
Detta är vår kolumn som vi kommer att sortera med VBA kod.
Steg:
- Tryck på Alt + F11 på tangentbordet eller gå till fliken Utvecklare -> Visual Basic för att öppna Redigerare för Visual Basic .
- I popup-kodfönstret klickar du i menyraden på Infoga -> Modul .
- Kopiera följande kod och klistra in den i kodfönstret.
Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Din kod är nu redo att köras.
Här,
- Nyckel1:=intervall("B5") → Specificerat B5 för att låta koden veta vilken kolumn som ska sorteras.
- Order1:=xlAscending → Beställningen specificeras som xlAscending för att sortera kolumnen i stigande ordning. Om du vill sortera kolumnen i fallande ordning skriver du xlDescending i stället.
- Rubrik:= xlNo → Eftersom vår kolumn inte har någon rubrik så har vi specificerat den med xlNo alternativ.
- Tryck på F5 på tangentbordet eller välj i menyraden Kör -> Kör Sub/UserForm Du kan också bara klicka på liten Play-ikon i undermenyfältet för att köra makrot.
Du kommer att se att din kolumn nu är sorterade i stigande ordning .
Observera att vi här har definierat dataområdet manuellt som Intervall("B5:B15") .
Om du vill ändra data genom att lägga till eller ta bort värden kan du implementera följande kod som automatiskt uppdateras baserat på cellerna i datasetet.
Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Lägg märke till att istället för att definiera intervallet manuellt med Intervall("B5:B15") har vi skrivit, Räckvidd( "B5", Range("B5"). End(xlDown)) .
Detta sorterar kolumnen baserat på den sista fyllda cellen i kolumnen. Om det finns tomma celler kommer data endast att beaktas upp till den första tomma cellen.
Läs mer: VBA för att sortera en tabell i Excel (4 metoder)
2. Infoga VBA-makro för att sortera en enda kolumn med rubrik
I föregående avsnitt hade vi ett dataset med en enda kolumn utan rubrik, men nu har vi a kolumn med en rubrik .
Den här gången ska vi lära oss att sortera den med hjälp av VBA-makro .
Steg:
- På samma sätt som tidigare, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- I kodfönstret kopierar du följande kod och klistrar in den.
Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub
Din kod är nu redo att köras.
Här,
- Nyckel1:=intervall("B5") → Specificerat B5 för att låta koden veta vilken kolumn som ska sorteras.
- Order1:=xlDescending → Den här gången ska vi sortera kolumnen i fallande ordning, så ange ordningen som xlDescending .
- Rubrik:= xlYes → Eftersom vår kolumn har en rubrik den här gången har vi specificerat den med xlJa alternativ.
- Kör den här koden och du kommer att få följande kolumn med rubrik sorterad i fallande ordning .
Läs mer: Hur man sorterar ListBox med VBA i Excel (en komplett guide)
Liknande läsningar:
- Hur man sorterar IP-adresser i Excel (6 metoder)
- [Lösta!] Excel-sortering fungerar inte (2 lösningar)
- Hur du lägger till en sorteringsknapp i Excel (7 metoder)
- Sortera intervall med VBA i Excel (6 exempel)
- Sortera efter namn i Excel (3 exempel)
3. VBA-makro för att sortera flera kolumner med eller utan rubrik
Du kan också sortera flera kolumner i ditt dataset med VBA-kod.
Steg:
- Som tidigare visats kan öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- I kodfönstret kopierar du följande kod och klistrar in den.
Sub SortMultipleColumnsWithHeaders() Med 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 kod är nu redo att köras.
Här,
.SortFields.Add Key:=Range("B4"), Order:=xlAscending
.SortFields.Add Key:=Range("C4"), Order:=xlAscending
Genom dessa två rader definierar vi Cell B4 och C4 för att sortera två kolumner som är kopplade till dem på stigande ordning .
Eftersom vi har rubriker i vårt dataset har vi angett följande Rubrik = xlYes , annars skulle vi ha skrivit Rubrik = xlNo i koden.
- Kör den här koden och du kommer att få följande kolumner med rubrik sorterade i stigande ordning .
4. Makro för att sortera data genom att dubbelklicka på rubriken i Excel
Om du vill sortera data enkelt bara genom att dubbelklicka på rubriken kan du göra det med VBA kod.
Steg:
- Högerklicka på på den fliken för bladet .
- I listan över alternativ som visas klickar du på Visa kod .
- Kodfönstret visas, kopiera följande kod och klistra in den där.
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
- Spara koden.
- Gå nu tillbaka till det aktuella arbetsbladet och om du dubbelklicka på rubrikerna ser du att kolumnerna omorganiseras.
Läs mer: Hur man sorterar och filtrerar data i Excel (en fullständig vägledning)
Saker att komma ihåg
- Du kan skapa ett namngivet intervall och använda det i stället när du skickar ett intervall med cellreferenser i Sortera metoden. Om du till exempel vill sortera intervallet A1:A10 I stället för att skicka den varje gång i koden kan du skapa ett namngivet intervall av den, till exempel " SortRange " och använda den tillsammans med Range.Sort metod som Range("SortRange") .
- Om du inte är säker på om ditt dataset har rubriker eller inte kan du låta systemet avgöra det genom att använda xlGuess parameter.
Slutsats
I den här artikeln fick du veta hur du kan sortera kolumnen i Excel VBA Jag hoppas att den här artikeln har varit till stor nytta för dig. Du får gärna fråga om du har några frågor om ämnet.