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

  • Dela Detta
Hugh West

Genomförande av VBA-makro är den mest effektiva, snabbaste och säkraste metoden för att utföra alla operationer i Excel. I den här artikeln kommer vi att visa dig hur du kan sortera tabellen i Excel med VBA .

Ladda ner arbetsboken

Du kan ladda ner den kostnadsfria Excel-arbetsboken för övningar här.

Sortera tabell med VBA.xlsm

Saker att känna till innan du implementerar VBA för att sortera en tabell i Excel

Det finns några parametrar som du ofta måste använda när du arbetar med Sortera metod för att VBA Här kommer vi att diskutera några av parametrarna för att du ska känna till dem när du skriver koden.

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 tabell i Excel

Det här avsnittet visar hur du kan sortera Excel-tabeller genom att ta hänsyn till värde, färger, ikoner och flera kolumner med VBA kod.

1. Bädda in VBA för att sortera tabellen efter värde i Excel

I följande exempel kommer vi att sortera tabellen efter värdena som finns i den Mark kolumnen i fallande ordning.

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 SortTableValue() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("SortTBL") Set iColumn = Range("SortTBL[Marks]") With iTable.Sort .SortFields.Clear .SortFields.Add Key:=iColumn, SortOn:=xlSortOnValues, Order:=xlDescending .Header = xlYes .Apply End With End Sub 

Din kod är nu redo att köras.

Här,

  • SortTBL → Ange tabellens namn.
  • SortTBL[Märken] -> Angav kolumnnamnet för tabellen som ska sorteras.
  • Nyckel1:=iColumn → Ange kolumnintervallet så att koden vet vilken kolumn i tabellen som ska sorteras.
  • Order1:=xlDescending → Beställningen specificeras som xlDescending för att sortera kolumnen i fallande ordning. Om du vill sortera kolumnen i stigande ordning skriver du xlAscending i stället.
  • Rubrik:= xlYes → Eftersom kolumnen i den här tabellen har en rubrik så specificerade vi den med xlJa 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 kolumnen i din tabell nu är sorterade i fallande ordning .

Läs mer: Sortera data efter värde i Excel (5 enkla metoder)

2. Infoga VBA-makro för att sortera tabell för flera kolumner

Du kan också sortera en tabell för flera kolumner i Excel med VBA makro.

Från tabellen ovan sorterar vi kolumnerna Namn och Avdelning i stigande ordning.

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 SortTable() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("TableValue") Set iColumn1 = Range("TableValue[Name]") Set iColumn2 = Range("TableValue[Department]") With iTable.Sort .SortFields.Clear .SortFields.Add Key:=iColumn1, Order:=xlAscending .SortFields.Add Key:=iColumn2, Order:=xlAscending.Header = xlYes .Apply End With End Sub 

Din kod är nu redo att köras.

Här,

  • TableValue → Ange tabellens namn.
  • TableValue[Namn] -> Ange det första kolumnnamnet för tabellen som ska sorteras.
  • TableValue[Department] -> Ange det andra kolumnnamnet för tabellen som ska sorteras.
  • Nyckel1:=iKolumn1 → Ange kolumnintervallet så att koden vet att den första kolumnen i tabellen måste sorteras.
  • Nyckel1:=iKolumn2 → Ange kolumnintervallet så att koden vet att den andra kolumnen i tabellen måste sorteras.
  • Order1:=xlAscending → Beställningen specificeras som xlAscending för att sortera kolumnen i fallande ordning. Om du vill sortera kolumnen i fallande ordning ska du skriva xlDescending i stället.
  • Rubrik:= xlYes → Eftersom kolumnerna i den här tabellen har rubriker har vi specificerat den med xlJa alternativ.

  • Kör denna kod och du får båda dessa kolumnerna i tabellen sorterade i stigande ordning.

Läs mer: Automatisk sortering av flera kolumner i Excel (3 sätt)

Liknande läsningar

  • Hur man sorterar unika listor i Excel (10 användbara metoder)
  • Sortera array med Excel VBA (både stigande och fallande ordning)
  • Hur man sorterar och filtrerar data i Excel (en fullständig vägledning)
  • Automatisk sortering i Excel när data ändras (9 exempel)
  • Slumpmässig sortering i Excel (formler + VBA)

3. Implementera makro för att sortera tabellen efter cellfärg i Excel

Du kan också sortera en tabell enligt cellens färg som den innehåller.

Med tabellen ovan som exempel ska vi visa hur du sorterar den utifrån de färger som tabellen innehåller.

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 SortTableColor() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("SortTable") Set iColumn = Range("SortTable[Marks]") With iTable.Sort .SortFields.Clear .SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(248, 203, 173) .SortFields.Add(Key:=iColumn,Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(255, 217, 102) .SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(198, 224, 180) .SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(180, 198, 231) .Header = xlYes .Apply End With End Sub 

Din kod är nu redo att köras.

Här är det RGB koder som vi har tillhandahållit, kan du hitta den eller någon annan RGB koden som du vill ha genom att följa gif nedan.

  • Klicka bara på färgad cell .
  • I Hem klickar du på fliken pilen bredvid Fill Color (fyllningsfärg) välj sedan Fler färger . Du kommer att se den RGB koder i Anpassad fliken i den visade Färger popup-rutan.

  • Kör den här koden och din tabell kommer att bli sorterade utifrån färgerna .

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

4. Använd VBA för att sortera Excel-tabellen efter ikon

Anta att tabellen i datasetet har ikoner för att underlätta läsbarheten. Du kan sortera tabellen i tabell baserad på ikonerna i Excel med VBA makro.

Titta på datasetet ovan. Här har tabellen ikoner bredvid siffervärdena i Marker kolumner så att vi kan förstå vilken elev som har bra, dåliga eller genomsnittliga resultat.

Observera att om du inte vet hur du infogar en ikon i en cell kan du helt enkelt göra det med hjälp av Villkorlig formatering funktionen i Excel.

  • Välj hela intervallet eller kolumnen.
  • Gå till Villkorlig formatering -> Ikonuppsättningar Välj sedan de ikonuppsättningar du vill ha från alternativet.

Stegen till sortera en tabell baserat på ikoner anges nedan.

Steg:

  • Ö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 SortTableIcon() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("IconTable") Set iColumn = Range("IconTable[Marks]") With iTable.Sort .SortFields.Clear .SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(1) .SortFields.Add(Key:=iColumn,Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(2) .SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(3) .SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(4) .SortFields.Add(Key:=iColumn,Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(5) .Header = xlYes .Apply End With End Sub 

Din kod är nu redo att köras.

Här,

  • xl5Pilar -> Vi valde den uppsättning med 5 pilar från alternativet i Villkorlig formatering .
  • Artikel (1) -> Specificerade den första typ av pilikonen.
  • Artikel (2) -> Specificerade den andra typ av pilikonen.
  • Artikel (3) -> Specificerade den tredje typ av pilikonen.
  • Artikel (4) -> Specificerade den fjärde typ av pilikonen.
  • Artikel (5) -> Specificerade den femte typ av pilikonen.

  • Kör den här koden och tabellen kommer att bli sorterade utifrån ikonerna .

Läs mer: Hur du sorterar en tabell automatiskt i Excel (5 metoder)

Slutsats

I den här artikeln fick du veta hur du kan sortera tabellen 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.