Excel VBA: Avanceret filter med flere kriterier i et område (5 metoder) -

  • Del Dette
Hugh West

Når du arbejder med store datamængder og skal indstille flere filtre på én gang, Avanceret filtrering Excel er praktisk. Det kan også anvendes til at rydde op i dine data ved at fjerne kopier. Mens du anvender Avanceret filter , den VBA kode er meget nemmere at udføre. I denne vejledning viser vi dig, hvordan du anvender VBA Avanceret filter for flere kriterier i Excel .

Download arbejdsbog til øvelser

Download denne arbejdsbog til træning, så du kan øve dig, mens du læser denne artikel.

VBA Avanceret filter.xlsm

5 effektive metoder til VBA Avanceret filter med flere kriterier i et område i Excel

I de følgende afsnit nedenfor vil vi drøfte 5 metoder til brug VBA Avanceret filter for flere kriterier. I første omgang skal du måske kende syntaksen for VBA Avanceret filter .

VBA Avanceret filter Syntaks:

  • AdvancedFilter: henviser til et områdeobjekt. Du kan angive det område, hvor du vil anvende filteret.
  • Handling: er et påkrævet argument, som har to muligheder, xlFilterInPlace eller xlFilterCopy . xlFilterInPlace bruges til at filtrere værdien på det sted, hvor datasættet befinder sig. xlFilterCopy bruges til at få filterværdien på et andet ønsket sted.
  • KriterierRækkevidde: repræsenterer de kriterier, som værdien skal filtreres efter.
  • CopyToRange: er det sted, hvor du gemmer dine filterresultater.
  • Unik: er et valgfrit argument. Brug True argumentet for kun at filtrere de unikke værdier. Ellers betragtes det som standard som Falsk .

I billedet nedenfor er der et eksempelsæt af data til at anvende alle de filtre, som vi ønsker at udføre.

1. Anvend VBA Avanceret filter til OR-kriterierne i et område i Excel

I den første metode vil vi anvende ELLER kriterier ved hjælp af VBA Avanceret filter Lad os sige, at vi ønsker at filtrere dataene efter produktnavnet Cookies og Chokolade . For at anvende ELLER kriterier, skal du placere værdien i forskellige rækker. Følg nedenstående trin for at udføre opgaven.

Trin 1:

  • Tryk på Alt + F11 for at åbne den VBA-makro .
  • Klik på den Indsæt.
  • Vælg den Modul.

Trin 2:

  • Derefter indsætter du følgende VBA kode til at anvende ELLER.
 Sub Apply_VBA_Advanced_Filter_for_OR_Criteria() 'Declare Variable for datasætområde og for kriterieområde Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Indstil placering og område for datasætområde og kriterieområde Set Dataset_Rng = Sheets("Sheet1").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet1").Range("B14:E16") 'Anvend Advanced Filter til at filtrere datasættet ved hjælp af kriterierneDataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub 

Trin 3:

  • Gem derefter programmet, og tryk på F5 til at køre.
  • Du får derfor de filtrerede resultater som vist i billedet nedenfor.

Bemærkninger. Hvis du vil vende processen om eller fjerne al filterpastaen og køre VBA program.

 Sub Remove_All_Filter() On Error Resume Next 'kommando til at fjerne alle filtre for at vise det tidligere datasæt ActiveSheet.ShowAllData End Sub 

  • Som følge heraf får du den tidligere version af dit datasæt.

Læs mere: Excel VBA Eksempler på avanceret filter med kriterier (6 kriterier)

2. Udfør VBA Advanced Filter for AND-kriterierne i et område i Excel

I lighed med den foregående metode vil vi nu udføre den VBA Avanceret filter til den OG kriterier. Lad os sige, at vi ønsker at kende de småkager med en pris på $0.65 som vist i skærmbilledet nedenfor. For at anvende ELLER kriterier, skal du placere værdien i forskellige kolonner. For at anvende OG kriterier, skal du følge nedenstående vejledning.

Trin 1:

  • For at åbne VBA-makro , tryk på Alt + F11
  • Når du har åbnet den VBA-makro , indsæt følgende VBA koder i et nyt modul.
 Sub Apply_VBA_Advanced_Filter_for_AND_Criteria() 'Declare Variable for datasætområde og for kriterieområde Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Indstil placering og område for datasætområde og kriterieområde Set Dataset_Rng = Sheets("Sheet2").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet2").Range("B14:E15") 'Anvend Advanced Filter til at filtrere datasættet ved hjælp af kriterierneDataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub 

Trin 2:

  • Tryk på F5 for at køre programmet, efter at du har gemt det.
  • Til sidst får du de filtrerede resultater.

Læs mere: VBA til at kopiere data til et andet ark med avanceret filter i Excel

3. Udnyt VBA Advanced Filter til OR med AND-kriterier i et område i Excel

Du kan også anvende ELLER og OG kriterier begge i kombination. Du ønsker f.eks. at få værdierne for Cookies eller Chokolade , men for den Cookies, der er et andet kriterium pris $0.65 Følg nedenstående procedurer for at få det gjort.

Trin 1:

  • Indsæt følgende VBA koder efter åbning af den VBA-makro .
 Sub Apply_VBA_Advanced_Filter_for_OR_with_AND_Criteria() 'Declare Variable for datasætområde og for kriterieområde Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Indstil placering og område for datasætområde og kriterieområde Set Dataset_Rng = Sheets("Sheet3").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet3").Range("B14:E16") 'Anvend Advanced Filter til at filtrere datasættet ved hjælp af kriterierneDataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub 

Trin 2:

  • Derefter skal du først gemme programmet ved at trykke på F5 til at køre det.
  • Følgelig vil du finde værdier med visse OG og ELLER.

Læs mere: Anvend avanceret filter baseret på flere kriterier i én kolonne i Excel

Lignende læsninger:

  • Avanceret filter med flere kriterier i Excel (15 egnede eksempler)
  • Dynamisk avanceret filter i Excel (VBA & makro)
  • Sådan bruger du det avancerede filter i VBA (en trinvis vejledning)
  • Avanceret filter med kriterieområde i Excel (18 programmer)
  • Excel Advanced Filter virker ikke (2 grunde & løsninger)

4. Brug VBA Avanceret filter til unikke værdier med flere kriterier i Excel

Hvis du har dubletter i dit datasæt, kan du desuden fjerne dem, mens du filtrerer. Vi vil tilføje Unik argument til True for kun at få de unikke værdier og slette dubletterne. Følg de skitserede instruktioner.

Trin 1:

  • Først skal du åbne den VBA Makro ved at trykke på Alt + F11.
  • Indsæt følgende VBA koder i et nyt modul.
 Sub Apply_VBA_Advanced_Filter_for_Unique_Values() 'Declare Variable for datasætområde og for kriterieområde Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Indstil placering og område for datasætområde og kriterieområde Set Dataset_Rng = Sheets("Sheet4").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet4").Range("B14:E16") 'Anvend Advanced Filter til at filtrere datasættet ved hjælp af kriterierneDataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng, Unique:=True End Sub 

Trin 2:

  • Derefter skal du trykke på F5 for at køre programmet efter at have gemt det.
  • Derfor får du kun værdier for de unikke.

Læs mere: Sådan bruger du avanceret filter til kun unikke poster i Excel

5. Udfør VBA Advanced Filter for Conditional Case

Ud over de foregående metoder kan du også anvende betingelser med formler. Vi vil f.eks. finde den Priser i alt som er større end $100 For at opnå det skal du blot følge trinene.

Trin 1:

  • For det første skal du åbne den VBA-makro , tryk på Alt + F11 .
  • Vælg en ny Modul og indsæt følgende VBA-koder .
 Sub Apply_VBA_Advanced_Filter_for_Formula() 'Deklarér Variabel for datasætområde og for kriterieområde Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Indstil placering og område for datasætområde og kriterieområde Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15") 'Anvend avanceret filter til at filtrere datasættet ved hjælp af kriterierneDataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub 

Trin 2:

  • For det andet skal du gemme programmet og trykke på F5 knappen for at se resultaterne.

Bemærkninger. Derudover kan du få resultaterne på en gunstig plads, uanset om det er i et nyt område eller i et nyt regneark, ved at anvende xlFilterCopy handling. Du skal blot indsætte den VBA koder og køre dem for at få resultaterne i Ark6 i rækkevidde B4:E11 .

 'Deklarér Variabel for datasætområde og for kriterieområde Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Indstil placering og område for datasætområde og kriterieområde Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15") 'Anvend avanceret filter for at filtrere datasættet ved hjælp af kriterierne Dataset_Rng.AdvancedFilter Action:=xlFilterCopy,CriteriaRange:=Criteria_Rng, CopyToRange:=Sheets("Sheet6").Range("B4:E11") End Sub 

  • Se derfor det endelige resultat i et nyt regneark 'Sheet6' .

Læs mere: Sådan bruges avanceret filter, hvis kriterieområdet indeholder tekst i Excel

Konklusion

For at opsummere, håber jeg, at du nu forstår, hvordan du kan bruge VBA avanceret filter i Excel til at filtrere flere kriterieområder. Alle disse metoder skal bruges til at undervise og øve sig med dine data. Kig i øvelsesbogen og brug det, du har lært. På grund af din vigtige støtte er vi inspireret til at fortsætte med at præsentere seminarer som dette.

Hvis du har spørgsmål, er du velkommen til at kontakte os, og lad os vide, hvad du synes i kommentarfeltet nedenfor.

Exceldemy medarbejdere vil besvare dine henvendelser så hurtigt som muligt.

Bliv hos os og bliv ved med at lære.

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.