Ez az oktatóanyag megmutatja, hogyan kell használni az Excel COUNTIF és COUNTIFS függvényeket a VBA -ban
A VBA nem rendelkezik a használható COUNTIF vagy COUNTIFS függvényekkel - a felhasználónak a VBA beépített Excel funkcióit kell használnia a WorkSheetFunction tárgy.
COUNTIF munkalapFunkció
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 COUNTIF függvény az egyik.
123 | Sub TestCountIf ()Tartomány ("D10") = Application.WorksheetFunction.CountIf (Tartomány ("D2: D9"), "> 5")End Sub |
A fenti eljárás csak akkor számolja a tartomány (D2: D9) celláit, ha azok értéke 5 vagy nagyobb. Figyelje meg, hogy mivel nagyobb mint előjelet használ, az 5 -nél nagyobb feltételeknek zárójelben kell lenniük.
COUNTIF 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 AssignSumIfVariable ()Halvány eredmény duplán'Rendelje hozzá a változótresult = Application.WorksheetFunction.CountIf (Tartomány ("D2: D9"), "> 5")'Mutasd az eredménytMsgBox "Az 5 -nél nagyobb értékű cellák száma" & resultEnd Sub |
COUNTIFS használata
A COUNTIFS függvény hasonló a COUNTIF WorksheetFunction funkcióhoz, de lehetővé teszi több feltétel ellenőrzését. Az alábbi példában a képlet megszámolja azon cellák számát a D2 -től D9 -ig, ahol az eladási ár nagyobb 6 -nál, és a költségár 5 -nél nagyobb.
123 | Sub UsingCountIfs ()Tartomány ("D10") = WorksheetFunction.CountIfs (tartomány ("C2: C9"), "> 6", tartomány ("E2: E9"), "> 5")End Sub |
A COUNTIF használata tartomány -objektummal
Cellacsoportot rendelhet a Range objektumhoz, majd a Range objektumot a MunkalapFunkció tárgy.
123456789 | Sub TestCountIFRange ()Dim rngCount mint tartomány'rendelje hozzá a cellák tartományátRngCount = Tartomány beállítása ("D2: D9")'használja a tartományt a képletbenTartomány ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")'engedje el a tartomány objektumaitSet rngCount = SemmiEnd Sub |
COUNTIFS használata több tartományú objektumokon
Hasonlóképpen használhatja a COUNTIFS funkciót több tartományú objektumon.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngCriteria1 mint tartományDim rngCriteria2 mint tartomány'rendelje hozzá a cellák tartományátSet rngCriteria1 = Tartomány ("D2: D9")Set rngCriteria2 = Tartomány ("E2: E10")'használja a képlet tartományaitTartomány ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'engedje el a tartomány objektumaitSet rngCriteria1 = SemmiSet rngCriteria2 = SemmiEnd Sub |
COUNTIF képlet
Amikor a WorksheetFunction.COUNTIF ha összeget szeretne hozzáadni a munkalap egy tartományához, statikus értéket ad 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 az eljárás kiszámolta a tartományban (D2: D9) lévő cellák mennyiségét, ahol az értékesítési ár nagyobb, mint 6, és az eredményt D10 -be tettük. Amint a képletsávban látható, ez az eredmény egy ábra és nem képlet.
Ha bármelyik érték megváltozik a tartományban (D2: D9), akkor a D10 eredmény változik NEM változás.
Ahelyett, hogy a WorksheetFunction.SumIf, a VBA segítségével SUMIF függvényt alkalmazhat egy cellára a Képlet vagy KépletR1C1 mód.
Képlet módszer
A képletmód lehetővé teszi, hogy konkrétan mutasson egy cellatartományra, például: D2: D9, amint az alább látható.
123 | Sub TestCountIf ()Tartomány ("D10"). KépletR1C1 = "= COUNTIF (D2: D9," "> 5" ")"End Sub |
FormulaR1C1 módszer
A FormulaR1C1 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 TestCountIf ()Tartomány ("D10"). KépletR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"End Sub |
A képlet még rugalmasabbá tétele érdekében módosíthatjuk a kódot, hogy így nézzen ki:
123 | Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"End Sub |
Bárhol is legyen a munkalapon, a képlet ezután megszámolja azokat a cellákat, amelyek megfelelnek a feltételeknek közvetlenül felette, és elhelyezi a választ az ActiveCell -ben. A COUNTIF 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.
A D10 -ben most képlet lesz az érték helyett.
A link szövege