VBA för att sortera kolumnen i Excel (4 metoder)

  • Dela Detta
Hugh West

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.
  • xlAscending = För att sortera i stigande ordning.
  • xlDescending = För att sortera i fallande ordning.
Rubrik Valfritt XlYesNoGuess Anger om den första raden innehåller rubriker eller inte.
  • xlNo = När kolumnen inte har några rubriker; Standardvärde.
  • xlJa = När kolumnerna har rubriker.
  • xlGuess = För att låta Excel bestämma rubrikerna.

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 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.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.