Sortera intervall med VBA i Excel (6 exempel)

  • Dela Detta
Hugh West

Att veta hur man sorterar intervall med hjälp av VBA i Excel sparar tid och kraft i våra dagliga beräkningar. Även om Excel har en sorteringsfunktion som standard. Genom att använda Range.Sort metod får vi tillgång till flera parametrar för att sortera ett dataset med fler alternativ än vanligt.

Ladda ner övningsboken

Ladda ner den här arbetsboken för att träna medan du läser den här artikeln.

Sortera intervall i Excel.xlsm

Introduktion till Range.Sort Statement i Excel VBA

Syfte : Sortera ett intervall av celldata.

Syntax:

uttryck .Sortera ( Nyckel1 , Beställning1 , Nyckel2 , Typ , Beställning2 , Nyckel3 , Beställning3 , Rubrik , OrderCustom , MatchCase , Orientering , SortMethod , DataOption1 , DataOption2 , DataOption3 )

Här kan uttryck representerar en Utbud objektet, dvs. en cell, en rad, en kolumn eller ett urval av celler.

Argument:

Vi måste tillhandahålla tre de viktigaste parametrarna för Range.Sort metod. De är-

Nyckel - Det intervall av celler från en eller flera kolumner som vi vill sortera.

Beställ - Ange sorteringsordning, antingen stigande eller fallande.

Rubrik - Ange om de kolumner som ska sorteras har en rubrik eller inte.

6 exempel på att sortera intervall i Excel VBA

I den här artikeln använder vi som dataset en lista med namn på personer med födelsedatum och ålder. Vi använder olika metoder för att sortera datasetetet. Vi går igenom artikeln och övar för att behärska dessa metoder.

1. Sortera ett kolumnområde med Excel VBA

I det här exemplet ska vi sortera människor från äldsta till yngsta . Vi följer stegen för att använda Utbud . Sortera metod som kommer att sortera Kolumn för ålder fallande ordning .

Steg:

  • Gå till Fliken för utvecklare i den Excel-bandet till Klicka på på den Visual Basic

  • Välj sedan den Modulalternativ från Fliken Infoga för att öppna en ny modul .

Nu lägger vi vår kod i sortera Ålder kolumnområde.

1.1 Kolumn med rubrik

Lägg in följande kod i den visuella kodredigeraren.

 Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub 

Tryck på F5 eller klicka på Kör knappen för att utföra koden.

Förklaring:

I koden ovan sätter vi in-

Uttryck (Range object)=Range("D4:D11"); kolumn för ålder med en rubrik cell D4 och värden D5:D11.

Key = Range("D4"); nyckel för sortering.

Order= xlDescending; som vi vill göra sortera värden från största till lägst vi fastställer den sorteringsordning som nedåtgående.

Rubrik =xlJa; I följande skärmdump kan vi se att den datamängd har en rubrik för var och en av de kolumner.

1.2 Kolumn utan rubrik

Lägg in följande kod i den visuella kodredigeraren.

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub 

Tryck på F5 eller klicka på Kör knappen för att utföra koden.

Förklaring:

I koden ovan sätter vi in-

Uttryck (Range object)=Range("D4:D10"); kolumn för ålder utan en rubrik har värden D4:D10.

Key = Range("D4"); nyckel för sortering.

Order= xlDescending; som vi vill göra sortera värden från största till lägst vi fastställer den sorteringsordning som nedåtgående.

Rubrik =xlNo; I följande skärmdump kan vi se att den Datamängd har ingen rubrik.

Relaterat innehåll: Sortera kolumner i Excel utan att blanda data (3 sätt)

2. Använda VBA-kod för att sortera flera kolumner i Excel

Visa sortering i flera kolumner Vi måste ändra vår Datamängd lite. Vi insatt några få ny rader I den ändrade datamängden har raderna 7, 8, och 9 har samma värden för de födelsedatum och åldrar men tre olika namn . dessa namn är inte i alla särskild beställning att stiga eller sjunka.

I det här exemplet ordnar vi namnen i följande ordning stigande ordning Vi kör följande kod i Visual Basic-redigeraren:

 Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub 

Förklaring:

I skärmbilden ovan kan vi se att åldrarna i kolumn D är sorterad nedåtgående ordning. Vi lade till ytterligare två parametrar i vår tidigare kod.

Key2: =Range("B4") , nyckeln för att sortera namn.

Order2: =xlAscending , den beställning för kortfattade namn .

Som ett resultat av detta ser vi följande namn raderna 7, 8 och 9 är nu alfabetiskt sorterade i stigande ordning.

I följande skärmdump har vi ändrat värde av den Parametern Order2 till sortera namn nedåtgående ordning.

Läs mer: Hur man sorterar flera kolumner i Excel (5 snabba metoder)

3. Dubbelklicka på rubriken för att sortera kolumnområdet i Excel VBA

Excels standardsorteringsfunktion tillåter inte att du kan sortera värden av en kolumn genom att dubbelklicka på kolumnrubrik Men med hjälp av VBA-kod kan vi få det att hända. Låt oss illustrera denna funktion genom att använda följande kod.

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub 

I den här koden använde vi Händelsen BeforeDoubleClick till inaktivera den vanliga dubbla - Klicka på vilket är att starta redigering läge i cellen. När denna händelse är igång kan vi, om vi dubbel - Klicka på på någon av de kolumnrubriker sorterar den kolumndata i stigande ordning .

Läs mer: VBA för att sortera kolumnen i Excel (4 metoder)

Liknande läsningar:

  • Hur man lägger till en sorteringsknapp i Excel (7 metoder)
  • Sortera unika listor i Excel (10 användbara metoder)
  • Hur man använder sorteringsfunktionen i Excel VBA (8 lämpliga exempel)
  • Sortera dubbletter i Excel (kolumner och rader)
  • Slumpmässig sortering i Excel (formler + VBA)

4. Sortera kolumnområde baserat på bakgrundsfärg med Excel VBA

Vi kan sortera ett antal celler i en kolumn . på deras bakgrundsfärg För att göra det måste vi Lägg till a parameter som heter SortOn som har en värde xlSortOnCellColor För att demonstrera sorteringen ställer vi först in olika bakgrundsfärger till raderna i vår datamängd .

Sedan i Visual Basic-kodredigeraren kopiera följande kod och tryck på F5 för att köra den.

 Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range Range("B4:D10") .Apply End With End Sub 

I följande skärmdump kan vi se sorterad datamängd baserat på deras bakgrundsfärg.

Förklaring:

  • I det här exemplet har vi namngett arbetsblad " bakgrund ". I koden skriver vi alltså " bakgrund " som vår aktivt arbetsbladsnamn.
  • Vi fastställer B4 som nyckel och B4:D10 som sortiment Koden sorterar data utifrån nyckeln.
  • Eftersom vi inte har angett rubrikparameter. körs koden för standardvärdet ingen rubrik.
  • Vi fastställer beställning parameter som stigande, så den sorterade uppgifterna från lägre till högre värden. .

Läs mer: Sortera efter färg i Excel (4 kriterier)

5. Tillämpa VBA-kod för att sortera kolumnområde baserat på teckensnittsfärg

Genom att använda VBA-kod kan vi sortera vårt dataset baserat på deras Typsnittsfärg Först måste vi färg olika rader för att illustrera exemplet.

Använd koden nedan för att sortera datasetet baserat på teckensnittsfärg.

 Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub 

Förklaring:

  • I det här exemplet har vi namngett arbetsblad " fontcolor ". I koden skriver vi alltså " fontcolor " som vår namn på aktivt arbetsblad.
  • Vi fastställer B4 som nyckel och B4:D11 som sortiment Koden sorterar data utifrån nyckeln.
  • I det här exemplet har vi också specificerat rubrikparametern som xlJa .
  • Här ställer vi in beställning parameter som stigande, så den sorterade uppgifterna från lägre till högre värden. .
  • Värdet på SortOn parametern är
  • Orienteringsparameter. har värdet xlTopToBottom eftersom det är obligatoriskt.
  • Färg att sortera på är i RGB-termer som har ett värde från 0 till 255 .

Läs mer: Sortera två kolumner i Excel efter matchning (både exakt och delvis matchning)

6. Ändra orientering av sorteringsområdet med Excel VBA

Användning av orientering kan vi ändra hur vi vill sortera data. I det här exemplet har vi omarbetad vårt dataset för att sortera den horisontellt .

Vi lägger in följande kod i Visual Basic-redigeraren och trycker på F5 för att köra den.

 Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub 

Här har vi sorterad uppgifter som bygger på de åldersrad stigande beställning från vänster till höger I koden ställer vi in orientering parameter som xlSortRows .

Relaterat innehåll: Automatisk sortering av flera kolumner i Excel (3 sätt)

Saker att komma ihåg

  • Parametern SortOn som vi använde för att sortera kolumnintervall baserat på bakgrundsfärg och Typsnittsfärg kan endast användas av en objekt för arbetsblad Vi kan inte använda den med en objekt för intervallet .
  • Händelsen BeforeDoubleClick sorterar data endast i stigande.

Slutsats

Nu vet vi hur man sorterar intervall med hjälp av VBA i Excel. Förhoppningsvis uppmuntrar det dig att använda detta mer självsäkert. Om du har några frågor eller förslag, glöm inte att skriva dem i kommentarsfältet nedan.

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.