VBA SUMIF és SUMIFS függvények

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.

wave wave wave wave wave