VBA til at sortere en tabel i Excel (4 metoder)

  • Del Dette
Hugh West

Gennemførelse af VBA-makro er den mest effektive, hurtigste og sikreste metode til at udføre enhver operation i Excel. I denne artikel vil vi vise dig, hvordan du kan sortere tabellen i Excel med VBA .

Download arbejdsbog

Du kan downloade den gratis Excel-arbejdsbog til øvelser her.

Sortere tabel med VBA.xlsm

Ting, du skal vide, før du implementerer VBA til at sortere en tabel i Excel

Der er nogle parametre, som du ofte skal bruge, når du arbejder med Sortere metode til VBA Så her vil vi diskutere nogle af parametrene for at gøre dig fortrolig, mens du skriver koden.

Parameter Krævet/ valgfri Datatype Beskrivelse
Nøgle Valgfrit Variant Angiver det område eller den kolonne, hvis værdier skal sorteres.
Bestil Valgfrit XlSortOrder Angiver den rækkefølge, som sorteringen skal udføres i.
  • xlAscending = For at sortere i stigende rækkefølge.
  • xlDescending = For at sortere i faldende rækkefølge.
Overskrift Valgfrit XlYesNoGuess Angiver, om den første række indeholder overskrifter eller ej.
  • xlIngen = Når kolonnen ikke har nogen overskrifter; Standardværdi.
  • xlJa = Når kolonnerne har overskrifter.
  • xlGuess = For at lade Excel bestemme overskrifterne.

4 metoder til implementering af VBA til sortering af tabel i Excel

Dette afsnit viser dig, hvordan du kan sortere Excel-tabeller ved at overveje værdi, farver, ikoner og flere kolonner med VBA kode.

1. Embed VBA til at sortere tabel efter værdi i Excel

I det følgende eksempel vil vi sortere denne tabel efter værdierne der er til stede i den Mark kolonnen i faldende rækkefølge.

Trin:

  • Tryk på Alt + F11 på dit tastatur eller gå til fanen Udvikler -> Visual Basic for at åbne Visual Basic-editor .

  • I pop-up kodevinduet skal du på menulinjen klikke på Indsæt -> Modul .

  • Kopier følgende kode, og indsæt den i kodevinduet.
 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 kode er nu klar til at køre.

Her,

  • SortTBL → Angav tabellens navn.
  • SortTBL[mærker] -> Angav kolonnenavnet for den tabel, der skal sorteres.
  • Key1:=iColumn → Angiv kolonneområdet for at lade koden vide, hvilken kolonne i tabellen der skal sorteres.
  • Order1:=xlDescending → Angav ordren som xlDescending for at sortere kolonnen i faldende rækkefølge. Hvis du vil sortere kolonnen i stigende rækkefølge, skal du skrive xlAscending i stedet.
  • Overskrift:= xlYes → Da kolonnen i denne tabel har en overskrift, har vi angivet den med xlJa mulighed.

  • Tryk på F5 på dit tastatur eller på menulinjen vælge Kør -> Kør Sub/UserForm Du kan også bare klikke på lille Play-ikon i undermenulinjen for at køre makroen.

Du vil se, at kolonnen i din tabel nu er sorteret i faldende rækkefølge .

Læs mere: Sådan sorterer du data efter værdi i Excel (5 nemme metoder)

2. Indsæt VBA-makro til sortering af tabel for flere kolonner

Du kan også sortere en tabel for flere kolonner i Excel med VBA makro.

Ud fra ovenstående tabel sorterer vi kolonnerne Navn og Afdeling i stigende rækkefølge.

Trin:

  • På samme måde som før, åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
  • Kopier følgende kode i kodevinduet, og indsæt 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 kode er nu klar til at køre.

Her,

  • TableValue → Angav tabellens navn.
  • TableValue[Navn] -> Angav det første kolonnenavn i den tabel, der skal sorteres.
  • TableValue[Afdeling] -> Angav det andet kolonnenavn for den tabel, der skal sorteres.
  • Key1:=iColumn1 → Angiv kolonneområdet for at lade koden vide, at den første kolonne i tabellen skal sorteres.
  • Key1:=iKolonne2 → Angiv kolonneområdet for at lade koden vide, at den anden kolonne i tabellen skal sorteres.
  • Order1:=xlAscending → Angav ordren som xlAscending for at sortere kolonnen i faldende rækkefølge. Hvis du ønsker at sortere kolonnen i faldende rækkefølge, skal du skrive xlDescending i stedet.
  • Overskrift:= xlYes → Da kolonnerne i denne tabel har overskrifter, har vi angivet den med xlJa mulighed.

  • Kør denne kode, og du vil få begge de kolonnerne i tabellen sorteret i stigende rækkefølge.

Læs mere: Sådan sorterer du automatisk flere kolonner i Excel (3 måder)

Lignende læsninger

  • Sådan sorteres unik liste i Excel (10 nyttige metoder)
  • Sortering af array med Excel VBA (både stigende og faldende rækkefølge)
  • Sådan sorterer og filtrerer du data i Excel (en komplet vejledning)
  • Automatisk sortering i Excel, når data ændres (9 eksempler)
  • Tilfældig sortering i Excel (formler + VBA)

3. Implementer makro til at sortere tabel efter cellefarve i Excel

Du kan også sortere en tabel efter cellens farve som den indeholder.

Med ovenstående tabel som eksempel vil vi vise dig, hvordan du kan sortere den på baggrund af de farver, som tabellen indeholder.

Trin:

  • Som tidligere vist, er åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
  • Kopier følgende kode i kodevinduet, og indsæt 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 kode er nu klar til at køre.

Her er det RGB koder, som vi har leveret, kan du finde den eller andre RGB kode, som du ønsker, ved at følge nedenstående gif.

  • Du skal blot klikke på farvet celle .
  • I den Hjem klikker du på fanen pil ved siden af Fill Color og vælg derefter Flere farver . du vil se den RGB koder i den Tilpasset fanen i den viste Farver popup-boks.

  • Kør denne kode, og din tabel vil være sorteret på grundlag af farverne .

Læs mere: Sådan sorteres efter farve i Excel (4 kriterier)

4. Anvend VBA til at sortere Excel-tabellen efter ikon

Lad os antage, at tabellen i datasættet har ikoner for at gøre den mere overskuelig. Du kan sortere tabel baseret på ikonerne i Excel med VBA makro.

Se på ovenstående datasæt. Her har tabellen ikoner ved siden af talværdierne i Marks kolonner, så vi kan forstå, hvilken elev der har gode, dårlige eller gennemsnitlige resultater.

Bemærk, at hvis du ikke ved, hvordan du kan indsætte et ikon i en celle, kan du blot gøre det med Betinget formatering funktion i Excel.

  • Vælg hele området eller kolonnen.
  • Gå til Betinget formatering -> Ikonesæt Vælg derefter de ikon-sæt, du ønsker, fra indstillingen.

Trin til sortere en tabel baseret på ikoner er angivet nedenfor.

Trin:

  • Åbn Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
  • Kopier følgende kode i kodevinduet, og indsæt 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 kode er nu klar til at køre.

Her,

  • xl5Pile -> Vi har valgt den sæt med 5 pile fra indstillingen i Betinget formatering .
  • Vare (1) -> Specificeret den første type af pilikon.
  • Vare (2) -> Specificeret den anden type af pilikon.
  • Artikel (3) -> Specificeret den tredje type af pilikon.
  • Vare (4) -> Specificeret den fjerde type af pilikon.
  • Vare (5) -> Specificeret den femte type af pilikon.

  • Kør denne kode, og tabellen vil blive sorteret på baggrund af ikonerne .

Læs mere: Sådan sorterer du automatisk en tabel i Excel (5 metoder)

Konklusion

Denne artikel viste dig, hvordan du kan sortere tabellen i Excel VBA Jeg håber, at denne artikel har været til stor gavn for dig. Du er velkommen til at spørge, hvis du har spørgsmål til emnet.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.