Innehållsförteckning
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.
|
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 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.