VBA-AANTAL

Deze tutorial laat je zien hoe je de Excel COUNT-functie in VBA gebruikt

De VBA COUNT-functie wordt gebruikt om het aantal cellen in uw werkblad te tellen met waarden erin. Het is toegankelijk via de WorksheetFunction-methode in VBA.

COUNT WerkbladFunctie

Het object WorksheetFunction kan worden gebruikt om de meeste Excel-functies aan te roepen die beschikbaar zijn in het dialoogvenster Functie invoegen in Excel. De COUNT-functie is er een van.

123 Sub TestCountFunctinoRange("D33") = Application.WorksheetFunction.Count(Range("D1:D32"))Einde sub

U kunt maximaal 30 argumenten hebben in de COUNT-functie. Elk van de argumenten moet verwijzen naar een celbereik.

In dit voorbeeld hieronder wordt geteld hoeveel cellen zijn gevuld met waarden in cellen D1 tot D9

123 Sub TestCount()Range("D10") = Application.WorksheetFunction.Count(Range("D1:D9"))Einde sub

In het onderstaande voorbeeld wordt geteld hoeveel waarden zich in een bereik in kolom D en in een bereik in kolom F bevinden. Als u het toepassingsobject niet typt, wordt ervan uitgegaan.

123 Sub TestCountMultiple()Bereik ("G8") = WerkbladFunctie.Aantal (Bereik ("G2:G7"), Bereik ("H2:H7"))Einde sub

Een telresultaat toewijzen aan een variabele

Misschien wilt u het resultaat van uw formule ergens anders in de code gebruiken in plaats van het rechtstreeks terug te schrijven naar en Excel-bereik. Als dit het geval is, kunt u het resultaat toewijzen aan een variabele om later in uw code te gebruiken.

1234567 Sub AssignCount()Dim resultaat Als geheel getal'Wijs de variabele toe'resultaat = WerkbladFunctie.Aantal(Bereik("H2:H11"))'Toon het resultaat'MsgBox "Het aantal cellen gevuld met waarden is " & resultaatEinde sub

COUNT met een bereikobject

U kunt een groep cellen aan het Range-object toewijzen en dat Range-object vervolgens gebruiken met de WerkbladFunctie object.

123456789 Sub TestCountRange()Dim rng als bereik'het bereik van cellen toewijzen'Stel rng = Bereik ("G2:G7") in'gebruik het bereik in de formule'Bereik ("G8") = WerkbladFunctie.Aantal (rng)'laat het bereikobject los'Stel rng = Niets inEinde sub

COUNT meerdere bereikobjecten

Op dezelfde manier kunt u tellen hoeveel cellen zijn gevuld met waarden in meerdere bereikobjecten.

123456789101112 Sub TestCountMultipleRanges()Dim rngA als bereikDim rngB als bereik'het bereik van cellen toewijzen'Stel rngA = Bereik ("D2:D10") inStel rngB = Bereik ("E2:E10") in'gebruik het bereik in de formule'Bereik ("E11") = WerkbladFunctie.Aantal (rngA, rngB)'laat het bereikobject los'Stel rngA = Niets inStel rngB = Niets inEinde sub

AANTAL AANTAL gebruiken

De telling telt alleen de WAARDEN in cellen, het telt niet de cel als de cel tekst bevat. Om de cellen te tellen die zijn gevuld met gegevens, moeten we de functie AANTALLEN gebruiken.

123 Sub TestCountA()Range("B8) = Application.WorksheetFunction.CountA(Range("B1:B6"))Einde sub

In het onderstaande voorbeeld retourneert de functie AANTAL een nul omdat er geen waarden in kolom B zijn, terwijl het een 4 zou retourneren voor kolom C. De functie AANTALLEN zou echter de cellen tellen met tekst erin en zou een waarde van 5 in kolom B terwijl u nog steeds een waarde van 4 retourneert in kolom C.

AANTAL BLANKS gebruiken

De functie COUNTBLANKS telt alleen de lege cellen in het celbereik - dwz cellen die helemaal geen gegevens bevatten.

123 Sub TestCountBlank()Range("B8) = Application.WorksheetFunction.CountBlanks(Range("B1:B6"))Einde sub

In het onderstaande voorbeeld heeft kolom B geen lege cellen, terwijl kolom C één lege cel heeft.

De AANTAL.ALS-functie gebruiken

Een andere werkbladfunctie die kan worden gebruikt, is de AANTAL.ALS-functie.

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")Einde sub

De bovenstaande procedure telt alleen de cellen met waarden erin als de criteria overeenkomen - groter dan 0, groter dan 100, groter dan 1000 en groter dan 10000. U moet de criteria tussen aanhalingstekens plaatsen om de formule correct te laten werken.

Nadelen van werkbladfunctie

Wanneer u de WerkbladFunctie om de waarden in een bereik in uw werkblad te tellen, wordt een statische waarde geretourneerd, geen flexibele formule. Dit betekent dat wanneer uw cijfers in Excel veranderen, de waarde die is geretourneerd door de WerkbladFunctie zal niet veranderen.

In het bovenstaande voorbeeld heeft de procedure TestCount de cellen in kolom H opgeteld waar een waarde aanwezig is. Zoals u in de formulebalk kunt zien, is dit resultaat een cijfer en geen formule.

Als een van de waarden daarom verandert in het bereik (H2:H12), zullen de resultaten in H14 NIET verandering.

In plaats van de WerkbladFunctie.Tellen, kunt u VBA gebruiken om een ​​telfunctie op een cel toe te passen met behulp van de Formule of FormuleR1C1 methoden.

De formulemethode gebruiken

Met de formulemethode kunt u specifiek naar een celbereik verwijzen, bijvoorbeeld: H2:H12, zoals hieronder weergegeven.

123 Sub TestCountFormuleBereik ("H14").Formule = "=Aantal (H2:H12)"Einde sub

De formuleR1C1-methode gebruiken

De FromulaR1C1-methode is flexibeler omdat deze u niet beperkt tot een bepaald cellenbereik. Het onderstaande voorbeeld geeft ons hetzelfde antwoord als het bovenstaande.

123 Sub TestCountFormula()Bereik ("H14").Formule = "=Aantal(R[-9]C:R[-1]C)"Einde sub

Om de formule echter flexibeler te maken, kunnen we de code aanpassen om er als volgt uit te zien:

123 Sub TestCountFormula()ActiveCell.FormulaR1C1 = "=Aantal(R[-11]C:R[-1]C)"Einde sub

Waar u ook bent in uw werkblad, de formule telt dan de waarden in de 12 cellen er direct boven en plaatst het antwoord in uw ActiveCell. Het bereik binnen de COUNT-functie moet worden verwezen met behulp van de rij (R) en kolom (C) syntaxis.

Met beide methoden kunt u dynamische Excel-formules gebruiken binnen VBA.

Er komt nu een formule in H14 in plaats van een waarde.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave