Tento tutoriál vám ukáže, jak používat funkci Excel COUNT ve VBA
Funkce VBA COUNT se používá k počítání počtu buněk v listu, které obsahují hodnoty. Je přístupný pomocí metody WorksheetFunction ve VBA.
COUNT pracovní list
Objekt WorksheetFunction lze použít k volání většiny funkcí aplikace Excel, které jsou k dispozici v dialogovém okně Vložit funkci v aplikaci Excel. Funkce COUNT je jednou z nich.
123 | Dílčí testovací částFunctinoRozsah ("D33") = Application.WorksheetFunction.Count (Rozsah ("D1: D32"))End Sub |
Ve funkci COUNT můžete mít až 30 argumentů. Každý z argumentů musí odkazovat na rozsah buněk.
Tento příklad níže spočítá, kolik buněk je naplněno hodnotami v buňkách D1 až D9
123 | Dílčí testovací počet ()Rozsah ("D10") = Application.WorksheetFunction.Count (rozsah ("D1: D9"))End Sub |
Následující příklad spočítá, kolik hodnot je v rozsahu ve sloupci D a v rozsahu ve sloupci F. Pokud nezadáte objekt Application, bude se předpokládat.
123 | Dílčí testovací množstvíVícenásobné ()Rozsah ("G8") = WorksheetFunction.Count (Rozsah ("G2: G7"), Rozsah ("H2: H7"))End Sub |
Přiřazení výsledku Count proměnné
Možná budete chtít použít výsledek vzorce jinde v kódu, než abyste ho psali přímo zpět do a rozsahu Excelu. Pokud tomu tak je, můžete výsledek přiřadit proměnné, kterou použijete později v kódu.
1234567 | Sub AssignCount ()Dim výsledek jako celé číslo"Přiřaďte proměnnou."result = WorksheetFunction.Count (Range ("H2: H11"))„Ukaž výsledekMsgBox "Počet buněk naplněných hodnotami" & resultEnd Sub |
COUNT s objektem rozsahu
K objektu Range můžete přiřadit skupinu buněk a poté použít tento Range objekt s Pracovní list Funkce objekt.
123456789 | Dílčí TestCountRange ()Dim rng As Range'přiřaďte rozsah buněkNastavit rng = rozsah ("G2: G7")'použijte rozsah ve vzorci.'Rozsah ("G8") = WorksheetFunction.Count (rng)'uvolněte předmět dosahuNastavit rng = NicEnd Sub |
COUNT objekty více rozsahů
Podobně můžete spočítat, kolik buněk je naplněno hodnotami ve více objektech rozsahu.
123456789101112 | Dílčí testovací částMultipleRanges ()Dim rngA jako rozsahDim rngB jako rozsah'přiřaďte rozsah buněkNastavit rngA = rozsah ("D2: D10")Nastavit rngB = rozsah ("E2: E10")'použijte rozsah ve vzorci.'Rozsah ("E11") = WorksheetFunction.Count (rngA, rngB)'uvolněte předmět dosahuNastavit rngA = NicNastavit rngB = NicEnd Sub |
Použití COUNTA
Počet bude počítat pouze HODNOTY v buňkách, nebude počítat buňku, pokud buňka obsahuje text. K počítání buněk, které jsou naplněny jakýmkoli druhem dat, bychom museli použít funkci COUNTA.
123 | Dílčí testovací množstvíA ()Rozsah ("B8) = Application.WorksheetFunction.CountA (rozsah (" B1: B6 "))End Sub |
V níže uvedeném příkladu by funkce COUNT vrátila nulu, protože ve sloupci B nejsou žádné hodnoty, zatímco ve sloupci C by vrátila hodnotu 4. Funkce COUNTA by však buňky s textem v nich spočítala a vrátila by hodnotu 5 ve sloupci B, přičemž stále vrací hodnotu 4 ve sloupci C.
Pomocí COUNTBLANKS
Funkce COUNTBLANKS bude počítat pouze prázdné buňky v rozsahu buněk - tj. Buňky, které v sobě nemají vůbec žádná data.
123 | Dílčí testovací částkaBlank ()Rozsah ("B8) = Application.WorksheetFunction.CountBlanks (rozsah (" B1: B6 "))End Sub |
V níže uvedeném příkladu nemá sloupec B žádné prázdné buňky, zatímco sloupec C má jednu prázdnou buňku.
Použití funkce COUNTIF
Další funkcí listu, kterou lze použít, je funkce COUNTIF.
123456 | Dílčí testovací částka ()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")End Sub |
Výše uvedený postup započítá buňky s hodnotami v nich pouze v případě, že jsou kritéria shodná - větší než 0, větší než 100, větší než 1 000 a větší než 10 000. Aby vzorec fungoval správně, musíte kritéria vložit do uvozovek.
Nevýhody funkce WorksheetFunction
Když použijete Pracovní list Funkce pro počítání hodnot v rozsahu v listu je vrácena statická hodnota, nikoli flexibilní vzorec. To znamená, že když se vaše čísla v Excelu změní, hodnota, která byla vrácena Pracovní list Funkce nezmění.
Ve výše uvedeném příkladu procedura TestCount spočítala buňky ve sloupci H, kde je přítomna hodnota. Jak vidíte na řádku vzorců, tento výsledek je obrázek a ne vzorec.
Pokud se tedy některá z hodnot změní v rozsahu (H2: H12), budou výsledky v H14 NE změna.
Místo použití WorksheetFunction.Count, můžete použít VBA k použití funkce Count na buňku pomocí Vzorec nebo Vzorec R1C1 metody.
Použití metody vzorce
Metoda vzorce vám umožňuje konkrétně ukázat na řadu buněk, např .: H2: H12, jak je uvedeno níže.
123 | Dílčí testovací vzorekRozsah ("H14"). Vzorec = "= Počet (H2: H12)"End Sub |
Použití metody FormulaR1C1
Metoda FromulaR1C1 je flexibilnější v tom, že vás neomezuje na nastavený rozsah buněk. Následující příklad nám dá stejnou odpověď jako ten výše.
123 | Dílčí testovací součet ()Rozsah ("H14"). Vzorec = "= Počet (R [-9] C: R [-1] C)"End Sub |
Aby byl vzorec flexibilnější, mohli bychom kód upravit tak, aby vypadal takto:
123 | Dílčí testovací součet ()ActiveCell.FormulaR1C1 = "= Počet (R [-11] C: R [-1] C)"End Sub |
Ať jste kdekoli v listu, vzorec poté spočítá hodnoty ve 12 buňkách přímo nad ním a umístí odpověď do vašeho ActiveCell. Na rozsah uvnitř funkce COUNT je třeba odkazovat pomocí syntaxe Row (R) a Column (C).
Obě tyto metody vám umožňují používat ve VBA vzorce Dynamic Excel.
Nyní bude místo hodnoty vzorec v H14.