Denne vejledning viser dig, hvordan du bruger Excel COUNT -funktionen i VBA
Funktionen VBA COUNT bruges til at tælle antallet af celler i dit regneark, der har værdier i dem. Det tilgås ved hjælp af WorksheetFunction -metoden i VBA.
COUNT regnearkFunktion
WorksheetFunction -objektet kan bruges til at kalde de fleste Excel -funktioner, der er tilgængelige i dialogboksen Indsæt funktion i Excel. TÆLLE -funktionen er en af dem.
123 | Sub TestCountFunctinoRange ("D33") = Application.WorksheetFunction.Count (Range ("D1: D32"))Afslut Sub |
Du kan have op til 30 argumenter i funktionen TÆLLE. Hvert af argumenterne skal referere til en række celler.
Dette eksempel nedenfor vil tælle, hvor mange celler der er befolket med værdier i cellerne D1 til D9
123 | Sub TestCount ()Range ("D10") = Application.WorksheetFunction.Count (Range ("D1: D9"))Afslut Sub |
Nedenstående eksempel tæller, hvor mange værdier der er i et område i kolonne D og i et område i kolonne F. Hvis du ikke skriver Application -objektet, antages det.
123 | Sub TestCountMultiple ()Range ("G8") = WorksheetFunction.Count (Range ("G2: G7"), Range ("H2: H7"))Afslut Sub |
Tildeling af et tælleresultat til en variabel
Du vil måske bruge resultatet af din formel andre steder i koden frem for at skrive det direkte tilbage til og Excel -område. Hvis dette er tilfældet, kan du tildele resultatet til en variabel, der skal bruges senere i din kode.
1234567 | Sub AssignCount ()Dim resultat Som heltal'Tildel variablenresult = WorksheetFunction.Count (Range ("H2: H11"))'Vis resultatetMsgBox "Antallet af celler udfyldt med værdier er" & resultatAfslut Sub |
TÆL med et områdeobjekt
Du kan tildele en gruppe celler til Range -objektet og derefter bruge dette Range -objekt med ArbejdsarkFunktion objekt.
123456789 | Sub TestCountRange ()Dim rng Som område'tildele celleområdetIndstil rng = Range ("G2: G7")'brug området i formlenOmråde ("G8") = WorksheetFunction.Count (rng)'frigiv rækkeviddeobjektetIndstil rng = IntetAfslut Sub |
TÆL flere objektområder
På samme måde kan du tælle, hvor mange celler der er fyldt med værdier i flere områdeobjekter.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngA As RangeDim rngB som område'tildele celleområdetIndstil rngA = Range ("D2: D10")Indstil rngB = Range ("E2: E10")'brug området i formlenOmråde ("E11") = WorksheetFunction.Count (rngA, rngB)'frigiv rækkeviddeobjektetIndstil rngA = IntetIndstil rngB = IntetAfslut Sub |
Brug af COUNTA
Tællingen tæller kun VÆRDIER i celler, den tæller ikke cellen, hvis cellen har tekst i den. For at tælle de celler, der er befolket med enhver form for data, skulle vi bruge COUNTA -funktionen.
123 | Sub TestCountA ()Område ("B8) = Application.WorksheetFunction.CountA (område (" B1: B6 "))Afslut Sub |
I eksemplet nedenfor ville funktionen TÆLLE returnere et nul, da der ikke er nogen værdier i kolonne B, mens det ville returnere et 4 for kolonne C. TÆLLES -funktionen tæller imidlertid cellerne med tekst i og ville returnere en værdi på 5 i kolonne B, mens der stadig returneres en værdi på 4 i kolonne C.
Brug af COUNTBLANKS
COUNTBLANKS -funktionen tæller kun de tomme celler i cellens område - altså celler, der slet ikke har data i sig.
123 | Sub TestCountBlank ()Område ("B8) = Application.WorksheetFunction.CountBlanks (område (" B1: B6 "))Afslut Sub |
I eksemplet herunder har kolonne B ingen tomme celler, mens kolonne C har en tom celle.
Brug af COUNTIF -funktionen
En anden regnearksfunktion, der kan bruges, er funktionen TÆLLE.
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")Afslut Sub |
Fremgangsmåden ovenfor tæller kun cellerne med værdier i, hvis kriterierne matcher - større end 0, større end 100, større end 1000 og større end 10000. Du skal sætte kriterierne inden for anførselstegn for at formlen fungerer korrekt.
Ulemper ved regnearksfunktion
Når du bruger ArbejdsarkFunktion for at tælle værdierne i et område i dit regneark returneres en statisk værdi, ikke en fleksibel formel. Det betyder, at når dine tal i Excel ændres, den værdi, der er returneret af ArbejdsarkFunktion vil ikke ændre sig.
I eksemplet ovenfor har proceduren TestCount talt cellerne i kolonne H op, hvor en værdi er til stede. Som du kan se i formellinjen, er dette resultat en figur og ikke en formel.
Hvis nogen af værdierne ændrer sig derfor i området (H2: H12), vil resultaterne i H14 IKKE lave om.
I stedet for at bruge RegnearkFunktion.Tælling, kan du bruge VBA til at anvende en tællefunktion på en celle ved hjælp af Formel eller FormelR1C1 metoder.
Ved hjælp af formelmetoden
Formelmetoden giver dig mulighed for at pege specifikt på en række celler, f.eks .: H2: H12 som vist nedenfor.
123 | Sub TestCountFormulaOmråde ("H14"). Formel = "= tælling (H2: H12)"Afslut Sub |
Brug af FormulaR1C1 -metoden
FromulaR1C1 -metoden er mere fleksibel, idet den ikke begrænser dig til et bestemt antal celler. Nedenstående eksempel vil give os det samme svar som ovenstående.
123 | Sub TestCountFormula ()Område ("H14"). Formel = "= Count (R [-9] C: R [-1] C)"Afslut Sub |
For at gøre formlen mere fleksibel kunne vi dog ændre koden til at se sådan ud:
123 | Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Antal (R [-11] C: R [-1] C)"Afslut Sub |
Uanset hvor du er i dit regneark, vil formlen derefter tælle værdierne i de 12 celler direkte over det og placere svaret i din ActiveCell. Området inde i funktionen TÆLL skal refereres til ved hjælp af rækken (R) og kolonnen (C) syntaks.
Begge disse metoder giver dig mulighed for at bruge dynamiske Excel -formler inden for VBA.
Der vil nu være en formel i H14 i stedet for en værdi.