VBA COUNTIF og COUNTIFS funktioner

Denne vejledning viser dig, hvordan du bruger Excel COUNTIF og COUNTIFS -funktionerne i VBA

VBA har ikke en ækvivalent til de COUNTIF- eller COUNTIFS -funktioner, du kan bruge - en bruger skal bruge de indbyggede Excel -funktioner i VBA ved hjælp af WorkSheetFunction objekt.

COUNTIF -regnearkFunktion

WorksheetFunction -objektet kan bruges til at kalde de fleste Excel -funktioner, der er tilgængelige i dialogboksen Indsæt funktion i Excel. COUNTIF -funktionen er en af ​​dem.

123 Sub TestCountIf ()Range ("D10") = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")Afslut Sub

Fremgangsmåden ovenfor tæller kun cellerne i område (D2: D9), hvis de har en værdi på 5 eller større. Bemærk, at fordi du bruger et større end -tegn, skal kriterierne større end 5 være inden for parentes.

Tildeling af et COUNTIF -resultat til en variabel

Du vil måske bruge resultatet af din formel andre steder i koden frem for at skrive det direkte tilbage til og Excel -område. Hvis dette er tilfældet, kan du tildele resultatet til en variabel, der skal bruges senere i din kode.

1234567 Sub AssignSumIfVariable ()Dim resultat som dobbelt'Tildel variablenresult = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")'Vis resultatetMsgBox "Antallet af celler med en værdi større end 5 er" & resultatAfslut Sub

Brug af COUNTIFS

COUNTIFS -funktionen ligner COUNTIF -regnearksfunktionen, men det giver dig mulighed for at kontrollere mere end ét kriterium. I eksemplet nedenfor tæller formlen antallet af celler i D2 til D9, hvor salgsprisen er større end 6 OG kostprisen er større end 5.

123 Sub UsingCountIfs ()Range ("D10") = WorksheetFunction.CountIfs (Range ("C2: C9"), "> 6", Range ("E2: E9"), "> 5")Afslut Sub

Brug af COUNTIF med et områdeobjekt

Du kan tildele en gruppe celler til Range -objektet og derefter bruge dette Range -objekt med ArbejdsarkFunktion objekt.

123456789 Sub TestCountIFRange ()Dim rngTæll som område'tildele celleområdetIndstil rngCount = Range ("D2: D9")'brug området i formlenOmråde ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")'frigiv rækkeviddeobjekterneIndstil rngCount = IntetAfslut Sub

Brug af COUNTIFS på objekter med flere områder

På samme måde kan du bruge COUNTIFS på flere områdeobjekter.

123456789101112 Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 som område'tildele celleområdetIndstil rngCriteria1 = Range ("D2: D9")Indstil rngCriteria2 = Range ("E2: E10")'brug intervallerne i formlenOmråde ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'frigiv rækkeviddeobjekterneSet rngCriteria1 = IntetSet rngCriteria2 = IntetAfslut Sub

COUNTIF formel

Når du bruger RegnearkFunktion.COUNTIF for at tilføje en sum til et område i dit regneark returneres en statisk værdi, ikke en fleksibel formel. Det betyder, at når dine tal i Excel ændres, den værdi, der er returneret af ArbejdsarkFunktion vil ikke ændre sig.

I eksemplet ovenfor har proceduren talt mængden af ​​celler med værdier i område (D2: D9), hvor salgsprisen er større end 6, og resultatet blev sat i D10. Som du kan se i formellinjen, er dette resultat en figur og ikke en formel.

Hvis nogen af ​​værdierne ændres i område (D2: D9), vil resultatet i D10 IKKE lave om.

I stedet for at bruge RegnearkFunktion.SumIf, kan du bruge VBA til at anvende en SUMIF -funktion på en celle ved hjælp af Formel eller FormelR1C1 metoder.

Formel metode

Formelmetoden giver dig mulighed for at pege specifikt på en række celler, f.eks .: D2: D9 som vist nedenfor.

123 Sub TestCountIf ()Område ("D10"). FormulaR1C1 = "= COUNTIF (D2: D9," "> 5" ")"Afslut Sub

FormulaR1C1 Metode

FormulaR1C1 -metoden er mere fleksibel, idet den ikke begrænser dig til et bestemt antal celler. Nedenstående eksempel vil give os det samme svar som ovenstående.

123 Sub TestCountIf ()Område ("D10"). FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"Afslut Sub

Men for at gøre formlen endnu mere fleksibel, kunne vi ændre koden til at se sådan ud:

123 Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"Afslut Sub

Uanset hvor du er i dit regneark, vil formlen derefter tælle de celler, der opfylder kriterierne direkte over det, og placere svaret i din ActiveCell. Området inde i funktionen TÆLLE skal refereres til ved brug af rækken (R) og kolonnen (C).

Begge disse metoder giver dig mulighed for at bruge dynamiske Excel -formler inden for VBA.

Der vil nu være en formel i D10 i stedet for en værdi.

Din linktekst

wave wave wave wave wave