VBA-kode til at filtrere data i Excel (8 eksempler)

  • Del Dette
Hugh West

Excel Kommando Sortere & Filtrere har en begrænset rækkevidde til Filtrere data . men ved hjælp af VBA du kan Filtrere data i en bred vifte, som du ønsker. Denne artikel giver dig 8 nyttige eksempler til brug for VBA kode til Filtrere data i excel ved hjælp af VBA koder med levende illustrationer.

Download arbejdsbog til øvelser

Du kan downloade den gratis Excel-skabelon her og øve dig på egen hånd.

VBA-kode til filtrering af data.xlsm

8 eksempler på at bruge VBA-kode til at filtrere data i Excel

Lad os først blive introduceret til vores datasæt, der repræsenterer nogle elevernes køn, status og alder .

1. Brug VBA-kode til at filtrere data baseret på et tekstkriterium i Excel

I vores allerførste eksempel bruger vi VBA til Filter kun Mand studerende fra Køn kolonne i datasættet.

Trin:

  • Højreklik på på den titel på arket .
  • Derefter vælg Vis kode fra den Kontekstmenu .

Kort efter blev en VBA vindue åbnes.

  • Type følgende koder i-
 Sub Filter_Data_Text() Worksheets("Text Criteria").Range("B4").AutoFilter Field:=2, Criteria1:="Male" End Sub 
  • Senere skal du minimere den VBA

Opdeling af kode

  • Her har jeg oprettet en Under procedure, Filter_Data_Text() .
  • Derefter blev brugt den Område egenskaben til at erklære vores respektive navn på arket og rækkevidde
  • Dernæst brugte jeg AutoFilter-metoden til brug Kriterier efter eget valg, hvor Felt:=2 betyder kolonne 2 . og Kriterium1:="Mand" til Filter dataene for Mand.
  • Derefter skal åben Dialogboksen Makroer , klik som følger: Udvikler> Makroer.

  • Vælg Makronavn som nævnt i koder .
  • Endelig skal du blot Tryk på Kør .

Se nu, at vi kun har fået Data om mandlige studerende efter Filtrering .

Læs mere: Excel-filter data baseret på celleværdi (6 effektive måder)

2. Anvend VBA-kode til at filtrere data med flere kriterier i én kolonne

Her vil vi Filter for flere kriterier i én kolonne. Fra kolonne nummer tre i datasættet vil vi Filter til Kandidater og Postgraduate studerende.

Trin:

  • Følg de to første trin af den første eksempel for at åbne den VBA-vindue .
  • Senere, type følgende koder i-
 Sub Filter_One_Column(() Worksheets("One Column").Range("B4").AutoFilter Field:=3, Criteria1:="Graduate", Operator:=xlOr, Criteria2:="Postgraduate" End Sub 
  • Derefter minimeres VBA

Opdeling af kode

  • Her har jeg oprettet en Under procedure, Filter_One_Column() .
  • Derefter blev brugt den Område egenskaben til at erklære vores respektive navn på arket og rækkevidde
  • Dernæst brugte jeg AutoFilter-metoden til at bruge den Kriterier efter eget valg, hvor Felt:=3 betyder kolonne 3 . Her, Kriterium1:="Uddannet" og Kriterium2:="Postgraduate" til Filter den studerendes Status .
  • Endelig brugte jeg Operatør:=xlOr at anvende ELLER betingelse Filter for flere kriterier.
  • I dette øjeblik, Følg tredje trin fra den første eksempel for at åbne den Dialogboksen for makroer boks .
  • Senere, Vælg den angivne Makronavn og Tryk på Kør .

Kort efter får du de filtrerede rækker baseret på flere kriterier som i billedet nedenfor.

Læs mere: Filtrere flere kriterier i Excel (4 egnede måder)

3. Anvend VBA-kode til at filtrere data med flere kriterier i forskellige kolonner i Excel

Nu vil vi Filter for flere kriterier- Mand og Kandidater studerende.

Trin:

  • Følg de to første trin af den første eksempel for at åbne den VBA
  • Senere, skriv følgende koder i-
 Sub Filter_Different_Columns() With Worksheets("Different Columns").Range("B4") .AutoFilter Field:=2, Criteria1:="Male" .AutoFilter Field:=3, Criteria1:="Graduate" End With End Sub 
  • Derefter minimere VBA-vinduet .

Opdeling af kode

  • Her har jeg oprettet en Under procedure, Filter_Different_Columns() .
  • Derefter brugte jeg den Med erklæring til brug Flere kolonner .
  • Derefter blev brugt den Område egenskaben til at erklære vores respektive navn på arket og rækkevidde
  • Dernæst brugte jeg AutoFilter-metoden til brug Kriterier efter eget valg, hvor Felt:=2 betyder kolonne 2 og Felt:=3 betyder kolonne 3 .
  • Her er udvalgte Kriterium1:="Mand" til Køn kolonne og Kriterium1:="Uddannet" til Status kolonnen til Filter data fra forskellige kolonner .
  • Derefter følge det tredje trin fra den første eksempel for at åbne den Dialogboksen Makroer .
  • Senere, Vælg den angivne Makronavn og Tryk på Kør .

Her er resultatet af de flere kriterier.

Læs mere: Excel VBA til at filtrere i samme kolonne efter flere kriterier (6 eksempler)

4. Brug VBA-kode til at filtrere de 3 øverste elementer i Excel

I dette eksempel filtrerer vi filteret de tre bedste studerende i henhold til deres alder .

Trin:

  • Følg de to første trin af den første eksempel for at åbne den VBA-vindue .
  • Derefter type følgende koder i-
 Sub Filter_Top3_Items() ActiveSheet.Range("B4").AutoFilter Field:=4, Criteria1:="3", Operator:=xlTop10Items End Sub 
  • Herefter minimeres den VBA-vindue .

Opdeling af kode

  • Her har jeg oprettet en Under procedure, Filter_Top3_Items() .
  • Og derefter brugt Operatør:=xlTop10Items til Filter til de tre bedste data .
  • Nu følge det tredje trin fra den første eksempel for at åbne den Dialogboksen for makroer boks .
  • Derefter vælg navnet på makroen som nævnt i kodekserne og Tryk på Kør .

Derefter får du et output som i billedet nedenfor-

Læs mere: Sådan filtreres baseret på celleværdi ved hjælp af Excel VBA (4 metoder)

Lignende læsninger

  • Sådan kopieres og indsættes når filteret anvendes i Excel
  • Sådan filtreres unikke værdier i Excel (8 nemme måder)
  • Filtrere flere kriterier i Excel med VBA (både AND og OR-typer)
  • Sådan bruger du tekstfilter i Excel (5 eksempler)
  • Sådan filtreres efter dato i Excel (4 hurtige metoder)

5. Brug VBA-kode til at filtrere de 50 bedste procenter i Excel

Lad os bruge VBA koder til at filtrere den de øverste halvtreds procent af studerende på grundlag af deres alder .

Trin:

  • Først, Følg de to første trin af den første eksempel for at åbne den VBA-vindue .
  • Senere, type følgende koder i-
 Sub Filter_Top50_Percent() ActiveSheet.Range("B4").AutoFilter Field:=4, Criteria1:="50", Operator:=xlTop10Percent End Sub 
  • Minimer den VBA-vindue .

Opdeling af kode

  • Her har jeg oprettet en Under procedure, Filter_Top50_Percent() .
  • Senere, brugt Operatør:=xlTop10Percent til Filtrer den de øverste halvtreds procent fra kolonne-4 .
  • I dette øjeblik, følge det tredje trin fra den første eksempel for at åbne den Dialogboksen Makroer.
  • Derefter Vælg den angivne Makronavn og Tryk på Kør .

Der var i alt 7 studerende så for 50 procent , den viser ca. tre studerende .

Læs mere: Sådan bruger du Profit Procent Formel i Excel (3 eksempler)

6. Anvend VBA-kode til at filtrere data ved hjælp af wildcard

Vi kan bruge Jokertegn-* (stjerne) VBA-koder til at filtrere data i Excel. Fra Statuskolonne , vi vil kun filtrere den værdier, der indeholder "Post .

Trin:

  • Følg de to første trin af den første eksempel for at åbne den VBA-vindue .
  • Derefter skriv følgende koder i-
 Sub Filter_with_Wildcard(() ActiveSheet.Range("B4").AutoFilter Field:=3, Criteria1:="*Post*" End Sub 
  • Senere skal du minimere den VBA-vindue .

Opdeling af kode

  • Her har jeg oprettet en Under procedure, Filter_with_Wildcard() .
  • Derefter anvendes Område ("B4") for at indstille intervallet.
  • Næste , brugt AutoFilter til Filter Felt:=3 betyder kolonne 3.
  • Kriterium1:="*Post*" til Filter de værdier, der indeholder "Post".
  • Nu følge det tredje trin fra den første eksempel for at åbne den Dialogboksen Makroer.
  • Vælg den angivne Makronavn og Tryk på Kør .

Så får du det ønskede resultat.

Læs mere: Sådan tilføjes filter i Excel (4 metoder)

7. Embed Excel VBA til at kopiere filtrerede data i et nyt ark i Excel

Jeg kan se, at der er nogle filtrerede data i mit datasæt. Nu kopierer jeg dem til et nyt ark ved hjælp af VBA . Disse koder vil ikke fungere korrekt i arket, du skal anvende dem i modulet.

Trin:

  • Tryk på Alt+F11 for at åbne den VBA

  • Klik derefter på Indsæt> Modul til åbne et modul .

  • Nu skriv følgende koder -
 Sub Copy_Filtered_Data_NewSheet() Dim xRng As Range Dim xWS As Worksheet If Worksheets("Copy Filtered Data").AutoFilterMode = False Then MsgBox "Noo filtered data" Exit Sub End If Set xRng = Worksheets("Copy Filtered Data").AutoFilter.Range Set xWS = Worksheets.Add xRng.Copy Range("G4") End Sub 
  • Derefter minimeres VBA

Opdeling af kode

  • Her har jeg oprettet en Under procedure, Copy_Filtered_Data_NewSheet() .
  • Derefter erklæres to-variabel- x Rng Som Range og xWS Som regneark.
  • Derefter anvendes en IF-erklæring til at kontrollere Filtreret
  • Senere, brugt MsgBox for at vise resultatet.
  • Derefter anvendes Regneark("Kopier filtrerede data").AutoFilter.Range for at vælge den Filtreret rækkevidde og anvendt Tilføj for at tilføje et nyt ark.
  • Endelig, Kopier Range("G4") vil kopiere den Filtreret data til den nyt ark .
  • Senere, følge det tredje trin fra den første eksempel for at åbne den Dialogboksen Makroer .
  • Derefter Vælg den angivne Makronavn og Tryk på Kør .

Nu kan du se, at Excel har åbnet et nyt ark og kopieret de filtrerede rækker.

Læs mere: Genvej til Excel-filter (3 hurtige anvendelser med eksempler)

8. Anvend VBA-kode til at filtrere data ved hjælp af drop-down-liste

I vores sidste eksempel vil vi først lave en rulleliste for køn og derefter bruge den til at filtrere data. Jeg har placeret kønskriterierne et andet sted, og vi laver en rulleliste i Celle D14 .

Trin:

  • Vælg Celle D14 .
  • Derefter klik som følger: Data> Dataværktøjer> Datavalidering> Datavalidering.

Kort efter blev en dialogboks vil åbne sig.

Vælg liste fra den Tillad drop-down .

Derefter klik på ikonet Åbn fra den Kildeboks .

Nu vælge kriterieområdet og Tryk på Enter-knappen .

  • I dette øjeblik er det bare Tryk på OK .

Nu er vores drop-down listen er klar.

  • Nu Følg de to første trin af den første eksempel for at åbne den VBA-vindue .
  • Derefter skriv følgende koder i-
 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$14" Then If Range("D14") = "All" Then Range("B4").AutoFilter Else Range("B4").AutoFilter Field:=2, Criteria1:=Range("D14") End If End If End If End Sub 
  • Derefter minimere VBA-vinduet .

Opdeling af kode

  • Her har jeg oprettet en Privat underafdeling procedure, Worksheet_Change(ByVal Target As Range).
  • Derefter valgte jeg Arbejdsark fra Generelt og Ændre fra Erklæringer .
  • Indstil derefter den Adresse for at kende stedet.
  • Endelig inden for den IF erklæring brugte den AutoFilter metode med Område og Kriterier
  • Nu skal du bare vælg kriterier fra rullelisten og Filteret vil blive aktiveret .

Her er den Filtreret output efter valg af Mand fra den drop-down .

Læs mere: Sådan filtreres efter liste i et andet ark i Excel (2 metoder)

Øvelsesafsnit

Du får et øvelsesark i Excel-filen ovenfor til at øve dig i de forklarede metoder.

Konklusion

Jeg håber, at de ovenfor beskrevne procedurer vil være gode nok til at bruge VBA kode til Filter data i excel. Du er velkommen til at stille spørgsmål i kommentarfeltet og give mig feedback.

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.