Denne opplæringen viser deg hvordan du bruker Excel COUNT -funksjonen i VBA
VBA COUNT -funksjonen brukes til å telle antall celler i regnearket som har verdier i dem. Den er tilgjengelig ved hjelp av WorksheetFunction -metoden i VBA.
COUNT 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 TestCountFunctinoRange ("D33") = Application.WorksheetFunction.Count (Range ("D1: D32"))Slutt Sub |
Du kan ha opptil 30 argumenter i TELLING -funksjonen. Hvert av argumentene må referere til en rekke celler.
Dette eksemplet nedenfor vil telle hvor mange celler som er fylt med verdier i cellene D1 til D9
123 | Sub TestCount ()Range ("D10") = Application.WorksheetFunction.Count (Range ("D1: D9"))Slutt Sub |
Eksemplet nedenfor vil telle hvor mange verdier som er i et område i kolonne D og i et område i kolonne F. Hvis du ikke skriver Application -objektet, antas det.
123 | Sub TestCountMultiple ()Range ("G8") = WorksheetFunction.Count (Range ("G2: G7"), Range ("H2: H7"))Slutt Sub |
Tilordne et tellingsresultat 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 AssignCount ()Dim resultat som heltall'Tilordne variabelenresult = WorksheetFunction.Count (Range ("H2: H11"))'Vis resultatetMsgBox "Antall celler fylt med verdier er" og resultatSlutt Sub |
TELL 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 TestCountRange ()Dim rng As Range'tilordne celleområdetSett rng = Range ("G2: G7")'bruk området i formelenOmråde ("G8") = WorksheetFunction.Count (rng)'slipp rekkeviddeobjektetSett rng = ingentingSlutt Sub |
TELL flere rekkeviddeobjekter
På samme måte kan du telle hvor mange celler som er fylt med verdier i flere rekkeviddeobjekter.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngA As RangeDim rngB som område'tilordne celleområdetSett rngA = Range ("D2: D10")Sett rngB = Range ("E2: E10")'bruk området i formelenOmråde ("E11") = WorksheetFunction.Count (rngA, rngB)'slipp rekkeviddeobjektetSett rngA = IngentingSett rngB = IngentingSlutt Sub |
Bruker COUNTA
Tellingen vil bare telle VERDIENE i celler, den vil ikke telle cellen hvis cellen har tekst i den. For å telle cellene som er fylt med noen form for data, må vi bruke COUNTA -funksjonen.
123 | Sub TestCountA ()Område ("B8) = Application.WorksheetFunction.CountA (Range (" B1: B6 "))Slutt Sub |
I eksemplet nedenfor vil TELLING -funksjonen returnere et null ettersom det ikke er noen verdier i kolonne B, mens det ville returnere en 4 for kolonne C. COUNTA -funksjonen teller imidlertid cellene med tekst i og returnerer en verdi på 5 i kolonne B mens du fortsatt returnerer verdien på 4 i kolonne C.
Bruker COUNTBLANKS
COUNTBLANKS -funksjonen vil bare telle tomme celler i celleområdet - dvs. celler som ikke har data i det hele tatt.
123 | Sub TestCountBlank ()Range ("B8) = Application.WorksheetFunction.CountBlanks (Range (" B1: B6 "))Slutt Sub |
I eksemplet nedenfor har kolonne B ingen tomme celler mens kolonne C har én tom celle.
Bruke COUNTIF -funksjonen
En annen regnearkfunksjon som kan brukes er COUNTIF -funksjonen.
123456 | Sub TestCountIf ()Range ("H14") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 0")Range ("H15") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 100")Range ("H16") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 1000")Range ("H17") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 10000")Slutt Sub |
Fremgangsmåten ovenfor vil bare telle cellene med verdier i hvis kriteriene samsvarer - større enn 0, større enn 100, større enn 1000 og større enn 10000. Du må sette kriteriene innenfor anførselstegn for at formelen skal fungere korrekt.
Ulemper med regnearkfunksjon
Når du bruker Arbeidsark Funksjon for å telle verdiene 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 TestCount telt opp cellene i kolonne H der en verdi er tilstede. Som du kan se i formellinjen, er dette resultatet en figur og ikke en formel.
Hvis noen av verdiene derfor endres i området (H2: H12), vil resultatene i H14 IKKE endring.
I stedet for å bruke RegnearkFunksjon.Tall, kan du bruke VBA til å bruke en tellefunksjon på en celle ved hjelp av Formel eller FormelR1C1 metoder.
Ved hjelp av formelmetoden
Formelmetoden lar deg peke spesifikt på et område av celler, for eksempel: H2: H12 som vist nedenfor.
123 | Sub TestCountFormulaOmråde ("H14"). Formel = "= Antall (H2: H12)"Slutt Sub |
Bruke FormulaR1C1 -metoden
FromulaR1C1 -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 TestCountFormula ()Område ("H14"). Formel = "= Antall (R [-9] C: R [-1] C)"Slutt Sub |
For å gjøre formelen mer fleksibel, kan vi imidlertid endre koden slik at den ser slik ut:
123 | Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Antall (R [-11] C: R [-1] C)"Slutt Sub |
Uansett hvor du er i regnearket, vil formelen deretter telle verdiene i de 12 cellene rett over det og plassere svaret i ActiveCell. Området inne i COUNT -funksjonen må refereres til ved hjelp av syntaksen Rad (R) og Kolonne (C).
Begge disse metodene lar deg bruke dynamiske Excel -formler i VBA.
Det vil nå være en formel i H14 i stedet for en verdi.