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