Ez az oktatóanyag megmutatja, hogyan kell használni az Excel COUNT funkciót a VBA -ban
A VBA COUNT függvény a munkalap azon celláinak számolására szolgál, amelyekben vannak értékek. A VBA WorksheetFunction módszerével érhető el.
COUNT feladatlapFunkció
A WorksheetFunction objektum a legtöbb Excel -funkció meghívására használható, amelyek az Excel Funkció beszúrása párbeszédpaneljén érhetők el. A COUNT függvény az egyik.
123 | TesztCountFunctinoTartomány ("D33") = Application.WorksheetFunction.Count (Tartomány ("D1: D32"))End Sub |
A COUNT függvényben legfeljebb 30 érv áll rendelkezésre. Minden érvnek cellatartományra kell vonatkoznia.
Ez az alábbi példa számolja, hogy hány cellában vannak értékek a D1 -D9 cellákban
123 | Rész tesztszám ()Tartomány ("D10") = Application.WorksheetFunction.Count (Tartomány ("D1: D9"))End Sub |
Az alábbi példa számolja, hogy hány érték van egy tartományban a D oszlopban és egy tartományban az F oszlopban. Ha nem írja be az Application objektumot, akkor azt feltételezzük.
123 | Sub TestCountMultiple ()Tartomány ("G8") = WorksheetFunction.Count (tartomány ("G2: G7"), tartomány ("H2: H7"))End Sub |
Számlálási eredmény hozzárendelése egy változóhoz
Érdemes a képlet eredményét máshol használni a kódban, ahelyett, hogy közvetlenül visszaírná az Excel tartományba. Ebben az esetben az eredményt hozzárendelheti egy változóhoz, amelyet később használhat a kódban.
1234567 | Sub AssignCount ()Halvány eredmény Egész számként'Rendelje hozzá a változóteredmény = WorksheetFunction.Count (tartomány ("H2: H11"))'Mutasd az eredménytMsgBox "Az értékekkel feltöltött cellák száma" & resultEnd Sub |
COUNT egy tartomány objektummal
Cellacsoportot rendelhet a Range objektumhoz, majd a Range objektumot a MunkalapFunkció tárgy.
123456789 | Sub TestCountRange ()Dim rng mint tartomány'rendelje hozzá a cellák tartományátRng = tartomány beállítása ("G2: G7")'használja a tartományt a képletbenTartomány ("G8") = WorksheetFunction.Count (rng)'engedje el a tartományobjektumotSet rng = SemmiEnd Sub |
COUNT több tartományú objektum
Hasonlóképpen megszámolhatja, hogy hány tartományban vannak értékek több tartománytartományban.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngA As RangeDim rngB mint tartomány'rendelje hozzá a cellák tartományátÁllítsa be az rngA = tartományt ("D2: D10")Állítsa be az rngB = tartományt ("E2: E10")'használja a tartományt a képletbenTartomány ("E11") = WorksheetFunction.Count (rngA, rngB)'engedje el a tartományobjektumotSet rngA = SemmiSet rngB = SemmiEnd Sub |
A COUNTA használata
A számlálás csak a cellákban lévő ÉRTÉKEKET számolja, nem számolja a cellát, ha a cellában szöveg van. Ahhoz, hogy megszámoljuk a sejteket, amelyek bármilyen adatot tartalmaznak, a COUNTA funkciót kell használnunk.
123 | Sub TestCountA ()Tartomány ("B8) = Application.WorksheetFunction.CountA (Tartomány (" B1: B6 "))End Sub |
Az alábbi példában a COUNT függvény nullát adna vissza, mivel a B oszlopban nincsenek értékek, míg a C oszlopban 4 -et adna vissza. A COUNTA függvény azonban számolja a szöveggel rendelkező cellákat, és a 5 a B oszlopban, miközben továbbra is 4 értéket ad vissza a C oszlopban.
A COUNTBLANKS használatával
A COUNTBLANKS függvény csak a cellák tartományában lévő üres cellákat számolja - azaz azokat a cellákat, amelyekben egyáltalán nincs adat.
123 | Sub TestCountBlank ()Tartomány ("B8) = Application.WorksheetFunction.CountBlanks (tartomány (" B1: B6 "))End Sub |
Az alábbi példában a B oszlop nem tartalmaz üres cellákat, míg a C oszlop egy üres cellát.
A COUNTIF funkció használata
Egy másik használható munkalap -funkció a COUNTIF függvény.
123456 | Sub TestCountIf ()Tartomány ("H14") = WorksheetFunction.CountIf (Tartomány ("H2: H10"), "> 0")Tartomány ("H15") = WorksheetFunction.CountIf (Tartomány ("H2: H10"), "> 100")Tartomány ("H16") = WorksheetFunction.CountIf (Tartomány ("H2: H10"), "> 1000")Tartomány ("H17") = WorksheetFunction.CountIf (Tartomány ("H2: H10"), "> 10000")End Sub |
A fenti eljárás csak akkor számolja a cellákat, amelyekben vannak értékek, ha a feltételek egyeznek - nagyobb, mint 0, nagyobb, mint 100, nagyobb, mint 1000 és nagyobb, mint 10000. A feltételeket idézőjelek közé kell tenni, hogy a képlet megfelelően működjön.
A WorksheetFunction hátrányai
Amikor a MunkalapFunkció a munkalap egy tartományának értékeinek számításához statikus értéket adunk vissza, nem pedig rugalmas képletet. Ez azt jelenti, hogy amikor az Excel számai megváltoznak, akkor a MunkalapFunkció nem fog változni.
A fenti példában a TestCount eljárás megszámolta a H oszlop celláit, ahol egy érték van jelen. Amint a képletsávban látható, ez az eredmény egy ábra és nem képlet.
Ha ezért valamelyik érték megváltozik a tartományban (H2: H12), akkor a H14 eredményei változnak NEM változás.
Ahelyett, hogy a WorksheetFunction.Count, a VBA segítségével számolási függvényt alkalmazhat egy cellára a Képlet vagy KépletR1C1 mód.
A képlet módszer használatával
A képletmód lehetővé teszi, hogy konkrétan mutasson egy sejttartományra, például: H2: H12, amint az alább látható.
123 | TestCountFormula alTartomány ("H14"). Képlet = "= Szám (H2: H12)"End Sub |
A FormulaR1C1 módszer használatával
A FromulaR1C1 módszer rugalmasabb, mivel nem korlátozza a cellák meghatározott tartományára. Az alábbi példa ugyanazt a választ adja, mint a fenti.
123 | Sub TestCountFormula ()Tartomány ("H14"). Képlet = "= Szám (R [-9] C: R [-1] C)"End Sub |
A képlet rugalmasabbá tétele érdekében azonban módosíthatjuk a kódot így:
123 | Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Szám (R [-11] C: R [-1] C)"End Sub |
Bárhol is legyen a munkalapon, a képlet ezután számolja a közvetlenül felette lévő 12 cellában lévő értékeket, és a választ behelyezi az ActiveCell -be. A COUNT függvényen belüli tartományra a Sor (R) és az Oszlop (C) szintaxis segítségével kell hivatkozni.
Mindkét módszer lehetővé teszi a dinamikus Excel képletek használatát a VBA -n belül.
Most a H14 képlet lesz az érték helyett.