Ez az oktatóanyag megmutatja, hogyan kell használni az Excel SUMIF és SUMIFS függvényeket a VBA -ban
A VBA nem rendelkezik az Ön által használható SUMIF vagy SUMIFS függvények megfelelőjével - a felhasználónak a VBA beépített Excel funkcióit kell használnia a WorkSheetFunction tárgy.
SUMIF 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 SUMIF függvény az egyik.
123 | Sub TestSumIf ()Tartomány ("D10") = Application.WorksheetFunction.SumIf (Tartomány ("C2: C9"), 150, tartomány ("D2: D9"))End Sub |
A fenti eljárás csak akkor adja össze a tartomány (D2: D9) celláit, ha a C oszlop megfelelő cellája = 150.
SUMIF 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 = WorksheetFunction.SumIf (tartomány ("C2: C9"), 150, tartomány ("D2: D9"))'Mutasd az eredménytMsgBox "A 150 értékesítési kódnak megfelelő eredmény összesen" & resultEnd Sub |
SUMIFS használata
A SUMIFS függvény hasonló a SUMIF WorksheetFunction funkcióhoz, de lehetővé teszi több feltétel ellenőrzését. Az alábbi példában az eladási árat szeretnénk összeadni, ha az értékesítési kód 150 ÉS az önköltségi ár nagyobb, mint 2. Vegye figyelembe, hogy ebben a képletben az összeadandó cellák tartománya a kritériumok előtt van, míg a SUMIF függvényben hátul van.
123 | Sub MultipleSumIfs ()Tartomány ("D10") = WorksheetFunction.SumIfs (tartomány ("D2: D9"), tartomány ("C2: C9"), 150, tartomány ("E2: E9"), "> 2")End Sub |
A SUMIF használata tartomány objektummal
Cellacsoportot rendelhet a Range objektumhoz, majd a Range objektumot a MunkalapFunkció tárgy.
123456789101112 | Sub TestSumIFRange ()Dim rngCriteria As RangeDim rngSum mint tartomány'rendelje hozzá a cellák tartományátÁllítsa be az rngCriteria = tartományt ("C2: C9")Állítsa be az rngSum = tartományt ("D2: D9")'használja a tartományt a képletbenTartomány ("D10") = WorksheetFunction.SumIf (rngCriteria, 150, rngSum)'engedje el a tartomány objektumaitSet rngCriteria = SemmiSet rngSum = SemmiEnd Sub |
SUMIFS használata több tartományú objektumokon
Hasonlóképpen használhatja a SUMIFS -t több tartományú objektumon.
123456789101112131415 | Sub TestSumMultipleRanges ()Dim rngCriteria1 mint tartományDim rngCriteria2 mint tartományDim rngSum mint tartomány'rendelje hozzá a cellák tartományátÁllítsa be az rngCriteria1 = tartományt ("C2: C9")Set rngCriteria2 = Tartomány ("E2: E10")Állítsa be az rngSum = tartományt ("D2: D10")'használja a képlet tartományaitTartomány ("D10") = WorksheetFunction.SumIfs (rngSum, rngCriteria1, 150, rngCriteria2, "> 2")'engedje el a tartományobjektumotSet rngCriteria1 = SemmiSet rngCriteria2 = SemmiSet rngSum = SemmiEnd Sub |
Vegye figyelembe, hogy mivel a nagyobb mint előjelet használja, a 2 -nél nagyobb feltételeknek zárójelben kell lenniük.
SUMIF képlet
Amikor a MunkalapFunkció.SUMIF ha összeget szeretne hozzáadni a munkalap egy tartományához, statikus összeget 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 összeadta a tartományt (D2: D9), ahol a SaleCode értéke 150 a C oszlopban, és az eredmény a D10 -be került. 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) vagy a tartományban (C2: D9), akkor a D10 eredmény 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: D10, amint az alább látható.
123 | Sub TestSumIf ()Tartomány ("D10"). KépletR1C1 = "= SUMIF (C2: C9,150, D2: D9)"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 TestSumIf ()Tartomány ("D10"). KépletR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C ) ""End Sub |
A képlet rugalmasabbá tétele érdekében azonban módosíthatjuk a kódot így:
123 | Sub TestSumIf ()ActiveCell.FormulaR1C1 = "= SUMIF (R [-8] C [-1]: R [-1] C [-1], 150, R [-8] C: R [-1] C)"End Sub |
Bárhol is legyen a munkalapon, a képlet összeadja azokat a cellákat, amelyek közvetlenül megfelelnek a fenti feltételeknek, és elhelyezi a választ az ActiveCell -ben. A SUMIF 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.