VBA -TELL

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.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave