VBA COUNTIF és COUNTIFS függvények

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

wave wave wave wave wave