VBA COUNTIF og COUNTIFS -funksjoner

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

wave wave wave wave wave