Denne opplæringen viser deg hvordan du bruker Excel COUNTIF og COUNTIFS -funksjonene i VBA
VBA har ikke tilsvarende funksjonene COUNTIF eller COUNTIFS som du kan bruke - en bruker må bruke de innebygde Excel -funksjonene i VBA ved å bruke WorkSheetFunction gjenstand.
COUNTIF -regnearkFunksjon
WorksheetFunction -objektet kan brukes til å ringe de fleste Excel -funksjonene som er tilgjengelige i dialogboksen Sett inn funksjon i Excel. TELLING -funksjonen er en av dem.
123 | Sub TestCountIf ()Range ("D10") = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")Slutt Sub |
Fremgangsmåten ovenfor vil bare telle cellene i område (D2: D9) hvis de har en verdi på 5 eller høyere. Legg merke til at fordi du bruker et større enn -tegn, må kriteriene større enn 5 ligge innenfor parentes.
Tilordne et COUNTIF -resultat til en variabel
Det kan være lurt å bruke resultatet av formelen din andre steder i koden i stedet for å skrive det direkte tilbake til og Excel Range. Hvis dette er tilfelle, kan du tilordne resultatet til en variabel som skal brukes senere i koden.
1234567 | Sub AssignSumIfVariable ()Dim resultat som Double'Tilordne variabelenresult = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")'Vis resultatetMsgBox "Antall celler med en verdi større enn 5 er" & resultatSlutt Sub |
Bruker COUNTIFS
COUNTIFS -funksjonen ligner COUNTIF WorksheetFunction, men den lar deg se etter mer enn ett kriterium. I eksemplet nedenfor vil formelen telle opp antall celler i D2 til D9 der salgsprisen er større enn 6 OG kostprisen er større enn 5.
123 | Sub UsingCountIfs ()Range ("D10") = WorksheetFunction.CountIfs (Range ("C2: C9"), "> 6", Range ("E2: E9"), "> 5")Slutt Sub |
Bruke COUNTIF med et områdeobjekt
Du kan tilordne en gruppe celler til Range -objektet, og deretter bruke det Range -objektet med Arbeidsark Funksjon gjenstand.
123456789 | Sub TestCountIFRange ()Dim rngCount som Range'tilordne celleområdetSett rngCount = Range ("D2: D9")'bruk området i formelenOmråde ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")'Slipp rekkeviddeobjekteneSett rngCount = IngentingSlutt Sub |
Bruke COUNTIFS på objekter med flere områder
På samme måte kan du bruke COUNTIFS på flere rekkeviddeobjekter.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 som rekkevidde'tilordne celleområdetSett rngCriteria1 = Range ("D2: D9")Sett rngCriteria2 = Range ("E2: E10")'bruk områdene i formelenOmråde ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'Slipp rekkeviddeobjekteneSett rngCriteria1 = IngentingSett rngCriteria2 = IngentingSlutt Sub |
COUNTIF formel
Når du bruker RegnearkFunksjon.COUNTIF for å legge til en sum i et område i regnearket, returneres en statisk verdi, ikke en fleksibel formel. Dette betyr at når tallene i Excel endres, vil verdien som er returnert av Arbeidsark Funksjon vil ikke endre seg.
I eksemplet ovenfor har prosedyren talt mengden celler med verdier i område (D2: D9) der salgsprisen er større enn 6, og resultatet ble satt i D10. Som du kan se i formellinjen, er dette resultatet en figur og ikke en formel.
Hvis noen av verdiene endres i område (D2: D9), vil resultatet i D10 IKKE endring.
I stedet for å bruke RegnearkFunksjon.SumIf, kan du bruke VBA til å bruke en SUMIF -funksjon på en celle ved hjelp av Formel eller FormelR1C1 metoder.
Formelmetode
Formelmetoden lar deg peke spesifikt på et celleområde, for eksempel: D2: D9 som vist nedenfor.
123 | Sub TestCountIf ()Område ("D10"). FormulaR1C1 = "= COUNTIF (D2: D9," "> 5" ")"Slutt Sub |
FormulaR1C1 Metode
FormulaR1C1 -metoden er mer fleksibel ved at den ikke begrenser deg til et angitt celleområde. Eksemplet nedenfor gir oss det samme svaret som det ovenfor.
123 | Sub TestCountIf ()Område ("D10"). FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"Slutt Sub |
For å gjøre formelen enda mer fleksibel, kan vi endre koden slik at den ser slik ut:
123 | Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= TELLING (R [-8] C: R [-1] C," "> 5" ")"Slutt Sub |
Uansett hvor du er i regnearket, vil formelen deretter telle cellene som oppfyller kriteriene rett over det og plassere svaret i ActiveCell. Området inne i COUNTIF -funksjonen må refereres til ved hjelp av rad (R) og kolonne (C) syntaks.
Begge disse metodene lar deg bruke dynamiske Excel -formler i VBA.
Det vil nå være en formel i D10 i stedet for en verdi.
Linkteksten din