Denne vejledning viser dig, hvordan du bruger Excel Sum -funktionen i VBA
Summefunktionen er en af de mest anvendte Excel -funktioner og sandsynligvis den første, som Excel -brugere lærer at bruge. VBA har faktisk ikke en ækvivalent - en bruger skal bruge den indbyggede Excel -funktion i VBA ved hjælp af WorkSheetFunction objekt.
Sum arbejdsarkFunktion
WorksheetFunction -objektet kan bruges til at kalde de fleste Excel -funktioner, der er tilgængelige i dialogboksen Indsæt funktion i Excel. SUM -funktionen er en af dem.
123 | Sub TestFunktionOmråde ("D33") = Application.WorksheetFunction.Sum ("D1: D32")Afslut Sub |
Du kan have op til 30 argumenter i SUM -funktionen. Hvert af argumenterne kan også referere til en række celler.
Dette eksempel nedenfor vil tilføje celler D1 til D9
123 | Sub TestSum ()Område ("D10") = Application.WorksheetFunction.SUM ("D1: D9")Afslut Sub |
Nedenstående eksempel tilføjer et område i kolonne D og et område i kolonne F. Hvis du ikke skriver Application -objektet, antages det.
123 | Sub TestSum ()Range ("D25") = WorksheetFunction.SUM (Range ("D1: D24"), Range ("F1: F24"))Afslut Sub |
Bemærk for et enkelt celleområde, at du ikke behøver at angive ordet 'Range' i formlen foran cellerne, det antages af koden. Men hvis du bruger flere argumenter, skal du gøre det.
Tildeling af et sumresultat til en variabel
Du vil måske bruge resultatet af din formel andre steder i koden frem for at skrive det direkte tilbage til og Excel -område. Hvis dette er tilfældet, kan du tildele resultatet til en variabel, der skal bruges senere i din kode.
1234567 | Sub AssignSumVariable ()Dim resultat som dobbelt'Tildel variablenresult = WorksheetFunction.SUM (Range ("G2: G7"), Range ("H2: H7"))'Vis resultatetMsgBox "Det samlede antal intervaller er" og resultatAfslut Sub |
Sum et områdeobjekt
Du kan tildele en gruppe celler til Range -objektet og derefter bruge dette Range -objekt med ArbejdsarkFunktion objekt.
123456789 | Sub TestSumRange ()Dim rng Som område'tildele celleområdetIndstil rng = Range ("D2: E10")'brug området i formlenOmråde ("E11") = WorksheetFunction.SUM (rng)'frigiv rækkeviddeobjektetIndstil rng = IntetAfslut Sub |
Sum flere rækkeviddeobjekter
På samme måde kan du opsummere flere områdeobjekter.
123456789101112 | Sub TestSumMultipleRanges ()Dim rngA As RangeDim rngB som område'tildele celleområdetIndstil rngA = Range ("D2: D10")Indstil rngB = Range ("E2: E10")'brug området i formlenOmråde ("E11") = WorksheetFunction.SUM (rngA, rngB)'frigiv rækkeviddeobjektetIndstil rngA = IntetIndstil rngB = IntetAfslut Sub |
Sum hele kolonnen eller rækken
Du kan også bruge Sum -funktionen til at tilføje en hel kolonne eller en hel række
Denne procedure nedenfor tilføjer alle de numeriske celler i kolonne D.
123 | Sub TestSum ()Område ("F1") = WorksheetFunction.SUM (område ("D: D")Afslut Sub |
Selvom denne procedure nedenfor tilføjer alle de numeriske celler i række 9.
123 | Sub TestSum ()Område ("F2") = WorksheetFunction.SUM (område ("9: 9")Afslut Sub |
Sum et array
Du kan også bruge WorksheetFunction.Sum til at tilføje værdier i et array.
123456789101112 | Sub TestArray ()Dim intA (1 til 5) som heltalDim SumArray som heltal'udfyld matrixenintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'tilføj arrayet og vis resultatetMsgBox WorksheetFunction.SUM (intA)Afslut Sub |
Brug af SumIf -funktionen
En anden regnearksfunktion, der kan bruges, er SUMIF -funktionen.
123 | Sub TestSumIf ()Range ("D11") = WorksheetFunction.SUMIF (Range ("C2: C10"), 150, Range ("D2: D10"))Afslut Sub |
Fremgangsmåden ovenfor vil kun tilføje cellerne i område (D2: D10), hvis den tilsvarende celle i kolonne C = 150.
Sum formel
Når du bruger ArbejdsarkFunktion.SUM for at tilføje en sum til et område i dit regneark returneres en statisk sum, ikke en fleksibel formel. Det betyder, at når dine tal i Excel ændres, den værdi, der er returneret af ArbejdsarkFunktion vil ikke ændre sig.
I eksemplet ovenfor har proceduren TestSum sammenlagt rækkevidde (D2: D10), og resultatet er blevet sat i D11. Som du kan se i formellinjen, er dette resultat en figur og ikke en formel.
Hvis nogen af værdierne ændres derfor i området (D2: D10), vil resultatet i D11 blive IKKE lave om.
I stedet for at bruge ArbejdsarkFunktion.SUM, kan du bruge VBA til at anvende en sumfunktion på en celle ved hjælp af Formel eller FormelR1C1 metoder.
Formel metode
Formelmetoden giver dig mulighed for at pege specifikt på en række celler, f.eks .: D2: D10 som vist nedenfor.
123 | Sub TestSumFormulaOmråde ("D11"). Formel = "= SUM (D2: D10)"Afslut Sub |
FormulaR1C1 Metode
FromulaR1C1 -metoden er mere fleksibel, idet den ikke begrænser dig til et bestemt antal celler. Nedenstående eksempel vil give os det samme svar som ovenstående.
123 | Sub TestSumFormula ()Område ("D11"). FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"Afslut Sub |
For at gøre formlen mere fleksibel kunne vi dog ændre koden til at se sådan ud:
123 | Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"Afslut Sub |
Uanset hvor du er i dit regneark, vil formlen derefter tilføje de 8 celler direkte over det og placere svaret i din ActiveCell. Området inde i SUM -funktionen skal refereres til ved hjælp af rækken (R) og kolonnen (C) syntaks.
Begge disse metoder giver dig mulighed for at bruge dynamiske Excel -formler inden for VBA.
Der vil nu være en formel i D11 i stedet for en værdi.