Ez az oktatóanyag megmutatja, hogyan kell használni az Excel Sum funkciót a VBA -ban
Az összeg függvény az egyik leggyakrabban használt Excel függvény, és valószínűleg az első, amelyet az Excel felhasználók megtanulnak használni. A VBA -nak valójában nincs megfelelője - a felhasználónak a VBA beépített Excel funkcióját kell használnia a WorkSheetFunction tárgy.
Összeg 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 SUM függvény az egyik.
123 | Sub TestFunctionTartomány ("D33") = Application.WorksheetFunction.Sum ("D1: D32")End Sub |
A SUM függvényben legfeljebb 30 argumentum áll rendelkezésre. Minden argumentum cellatartományra is utalhat.
Ez az alábbi példa összeadja a D1 -D9 cellákat
123 | Sub TestSum ()Tartomány ("D10") = Application.WorksheetFunction.SUM ("D1: D9")End Sub |
Az alábbi példa összead egy tartományt a D oszlopban és egy tartományt az F oszlopban. Ha nem írja be az Application objektumot, akkor azt feltételezzük.
123 | Sub TestSum ()Tartomány ("D25") = WorksheetFunction.SUM (tartomány ("D1: D24"), tartomány ("F1: F24"))End Sub |
Figyelje meg, hogy egyetlen cellatartomány esetében nem kell megadni a „Range” szót a képletben a cellák előtt, ezt a kód feltételezi. Ha azonban több érvet használ, akkor ezt meg kell tennie.
Összes 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 AssignSumVariable ()Halvány eredmény duplán'Rendelje hozzá a változóteredmény = WorksheetFunction.SUM (tartomány ("G2: G7"), tartomány ("H2: H7"))'Mutasd az eredménytMsgBox "A tartományok összértéke" és eredményEnd Sub |
Tartomány objektum összegzése
Cellacsoportot rendelhet a Range objektumhoz, majd a Range objektumot a MunkalapFunkció tárgy.
123456789 | Sub TestSumRange ()Dim rng mint tartomány'rendelje hozzá a cellák tartományátRng = tartomány beállítása ("D2: E10")'használja a tartományt a képletbenTartomány ("E11") = WorksheetFunction.SUM (rng)'engedje el a tartományobjektumotSet rng = SemmiEnd Sub |
Több tartományú objektumok összege
Hasonlóképpen több Range objektumot is összegezhet.
123456789101112 | Sub TestSumMultipleRanges ()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.SUM (rngA, rngB)'engedje el a tartományobjektumotSet rngA = SemmiSet rngB = SemmiEnd Sub |
Összes oszlop vagy sor
Az Összeg funkció segítségével egy egész oszlopot vagy egy egész sort is hozzáadhat
Ez az alábbi eljárás összeadja a D oszlop összes numerikus celláját.
123 | Sub TestSum ()Tartomány ("F1") = WorksheetFunction.SUM (Tartomány ("D: D")End Sub |
Míg ez az alábbi eljárás összeadja a 9. sor összes numerikus celláját.
123 | Sub TestSum ()Tartomány ("F2") = WorksheetFunction.SUM (Tartomány ("9: 9")End Sub |
Sum egy tömb
Használhatja a WorksheetFunction.Sum értéket is egy tömb értékeinek összeadásához.
123456789101112 | Sub TestArray ()Dim intA (1 -től 5 -ig) Egész számkéntDim SumArray mint egész'töltse ki a tömbötintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'add össze a tömböt és mutasd az eredménytMsgBox WorksheetFunction.SUM (intA)End Sub |
A SumIf függvény használata
Egy másik használható munkalap -funkció a SUMIF függvény.
123 | Sub TestSumIf ()Tartomány ("D11") = WorksheetFunction.SUMIF (Tartomány ("C2: C10"), 150, Tartomány ("D2: D10"))End Sub |
A fenti eljárás csak akkor adja össze a tartomány (D2: D10) celláit, ha a C oszlop megfelelő cellája = 150.
Összegképlet
Amikor a MunkalapFunkció.SUM 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 a TestSum eljárás összeadta a tartományt (D2: D10), és az eredmény a D11 -be került. Amint a képletsávban látható, ez az eredmény egy ábra és nem képlet.
Ha valamelyik érték ezért változik a Tartományban (D2: D10), akkor a D11 -es eredmény változik NEM változás.
Ahelyett, hogy a MunkalapFunkció.SUM, a VBA segítségével Sum Funkciót 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 TestSumFormulaTartomány ("D11"). Képlet = "= SUM (D2: D10)"End Sub |
FormulaR1C1 módszer
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 TestSumFormula ()Tartomány ("D11"). KépletR1C1 = "= SUM (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 TestSumFormula ()ActiveCell.FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"End Sub |
Bárhol is van a munkalapon, a képlet összeadja a közvetlenül alatta lévő 8 cellát, és a választ az ActiveCell -be helyezi. A SUM 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 D11 képlet lesz az érték helyett.