Tento tutoriál vám ukáže, ako používať funkciu Excel COUNT vo VBA
Funkcia VBA COUNT sa používa na spočítanie počtu buniek vo vašom pracovnom hárku, ktoré obsahujú hodnoty. Je k nemu prístup pomocou metódy WorksheetFunction vo VBA.
COUNT pracovný list
Objekt WorksheetFunction je možné použiť na vyvolanie väčšiny funkcií programu Excel, ktoré sú k dispozícii v dialógovom okne Vložiť funkciu v programe Excel. Funkcia COUNT je jednou z nich.
123 | Sub TestCountFunctinoRozsah ("D33") = Application.WorksheetFunction.Count (Rozsah ("D1: D32"))Koniec pod |
Vo funkcii COUNT môžete mať až 30 argumentov. Každý z argumentov musí odkazovať na určitý rozsah buniek.
Tento príklad nižšie spočíta, koľko buniek je obsadených hodnotami v bunkách D1 až D9
123 | Vedľajší testovací počet ()Rozsah ("D10") = Application.WorksheetFunction.Count (rozsah ("D1: D9"))Koniec pod |
Nasledujúci príklad spočíta, koľko hodnôt je v rozsahu v stĺpci D a v rozsahu v stĺpci F. Ak nezadáte objekt Application, bude sa to predpokladať.
123 | Viacnásobný testovací počet ()Rozsah ("G8") = WorksheetFunction.Count (rozsah ("G2: G7"), rozsah ("H2: H7"))Koniec pod |
Priradenie výsledku počítania premennej
Výsledok svojho vzorca môžete chcieť použiť inde v kóde, než ho písať priamo späť do programu Excel Range. Ak je to tak, môžete výsledok priradiť k premennej, ktorá sa má použiť neskôr vo vašom kóde.
1234567 | Sub AssignCount ()Stmaviť výsledok ako celé číslo„Priraďte premennúvýsledok = WorksheetFunction.Count (rozsah ("H2: H11"))„Ukáž výsledokMsgBox „Počet buniek obsadených hodnotami je“ & výsledokKoniec pod |
COUNT s objektom rozsahu
K objektu Range môžete priradiť skupinu buniek a potom použiť tento objekt Range s príponou Pracovný listFunkcia predmet.
123456789 | Sub TestCountRange ()Dim rng As Range'priradiť rozsah buniekNastaviť rng = rozsah ("G2: G7")„použite rozsah vo vzorciRozsah ("G8") = WorksheetFunction.Count (rng)'uvoľnite predmet dosahuNastaviť rng = ničKoniec pod |
COUNT objektov viacerých rozsahov
Podobne môžete počítať, koľko buniek je naplnených hodnotami vo viacerých objektoch rozsahu.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngA ako rozsahDim rngB ako rozsah'priradiť rozsah buniekNastaviť rngA = rozsah ("D2: D10")Nastaviť rngB = rozsah ("E2: E10")„použite rozsah vo vzorciRozsah ("E11") = WorksheetFunction.Count (rngA, rngB)'uvoľnite predmet dosahuNastaviť rngA = ničNastaviť rngB = ničKoniec pod |
Použitie COUNTA
Počet bude počítať iba HODNOTY v bunkách, nebude počítať bunku, ak je v bunke text. Na počítanie buniek, ktoré sú naplnené akýmkoľvek druhom údajov, by sme museli použiť funkciu COUNTA.
123 | Sub TestCountA ()Rozsah ("B8) = Application.WorksheetFunction.CountA (rozsah (" B1: B6 "))Koniec pod |
V nižšie uvedenom príklade by funkcia COUNT vrátila nulu, pretože v stĺpci B nie sú žiadne hodnoty, zatiaľ čo v stĺpci C by vrátila hodnotu 4. Funkcia COUNTA by však bunky s textom spočítala a vrátila by hodnotu 5 v stĺpci B, pričom stále vracia hodnotu 4 v stĺpci C.
Použitie COUNTBLANKS
Funkcia COUNTBLANKS bude počítať iba prázdne bunky v rozsahu buniek - tj bunky, v ktorých nie sú žiadne údaje.
123 | Sub TestCountBlank ()Rozsah ("B8) = Application.WorksheetFunction.CountBlanks (rozsah (" B1: B6 "))Koniec pod |
V nižšie uvedenom príklade nemá stĺpec B prázdne bunky, zatiaľ čo stĺpec C obsahuje jednu prázdnu bunku.
Použitie funkcie COUNTIF
Ďalšou funkciou pracovného hárka, ktorú je možné použiť, je funkcia COUNTIF.
123456 | Sub TestCountIf ()Rozsah ("H14") = WorksheetFunction.CountIf (rozsah ("H2: H10"), "> 0")Rozsah ("H15") = WorksheetFunction.CountIf (rozsah ("H2: H10"), "> 100")Rozsah ("H16") = WorksheetFunction.CountIf (rozsah ("H2: H10"), "> 1000")Rozsah ("H17") = WorksheetFunction.CountIf (rozsah ("H2: H10"), "> 10 000")Koniec pod |
Vyššie uvedený postup bude počítať bunky s hodnotami v nich iba vtedy, ak sú kritériá zhodné - väčšie ako 0, väčšie ako 100, väčšie ako 1 000 a vyššie ako 10 000. Aby vzorec fungoval správne, musíte kritériá vložiť do úvodzoviek.
Nevýhody funkcie WorksheetFunction
Keď použijete Pracovný listFunkcia na spočítanie hodnôt v rozsahu v hárku sa vráti statická hodnota, nie flexibilný vzorec. To znamená, že keď sa vaše údaje v Exceli zmenia, hodnota, ktorú vrátil súbor Pracovný listFunkcia sa nezmení.
Vo vyššie uvedenom príklade postup TestCount spočítal bunky v stĺpci H, kde je prítomná hodnota. Ako vidíte na paneli vzorcov, tento výsledok je údaj a nie vzorec.
Ak sa teda ktorákoľvek z hodnôt zmení v rozsahu (H2: H12), výsledky v H14 sa zmenia NIE zmeniť.
Namiesto použitia WorksheetFunction.Count, môžete použiť VBA na použitie funkcie počítania na bunku pomocou Vzorec alebo Formula R1C1 metódy.
Použitie metódy vzorca
Metóda vzorca vám umožňuje konkrétne poukázať na rozsah buniek, napr .: H2: H12, ako je uvedené nižšie.
123 | Vzorec čiastkového testovacieho počtuRozsah ("H14"). Vzorec = "= Počet (H2: H12)"Koniec pod |
Použitie metódy FormulaR1C1
Metóda FromulaR1C1 je flexibilnejšia v tom, že vás neobmedzuje na určitý rozsah buniek. Nasledujúci príklad nám poskytne rovnakú odpoveď ako vyššie.
123 | Vzorec čiastkového testu ()Rozsah ("H14"). Vzorec = "= počet (R [-9] C: R [-1] C)"Koniec pod |
Aby bol však vzorec flexibilnejší, mohli by sme kód zmeniť tak, aby vyzeral takto:
123 | Vzorec čiastkového testu ()ActiveCell.FormulaR1C1 = "= Počet (R [-11] C: R [-1] C)"Koniec pod |
Nech ste kdekoľvek v pracovnom hárku, vzorec potom spočíta hodnoty v 12 bunkách priamo nad ním a odpoveď vloží do vášho ActiveCell. Na rozsah vo funkcii COUNT je potrebné odkazovať pomocou syntaxe riadka (R) a stĺpca (C).
Obe tieto metódy vám umožňujú používať vzorce Dynamic Excel vo VBA.
Teraz bude namiesto hodnoty vzorec v H14.