Denne opplæringen viser deg hvordan du bruker Excel Sum -funksjonen i VBA
Sumfunksjonen er en av de mest brukte Excel -funksjonene, og sannsynligvis den første som Excel -brukere lærer å bruke. VBA har faktisk ikke en tilsvarende - en bruker må bruke den innebygde Excel -funksjonen i VBA ved å bruke WorkSheetFunction gjenstand.
Sum arbeidsarkFunksjon
WorksheetFunction -objektet kan brukes til å ringe de fleste Excel -funksjonene som er tilgjengelige i dialogboksen Sett inn funksjon i Excel. SUM -funksjonen er en av dem.
123 | Sub TestFunksjonOmråde ("D33") = Application.WorksheetFunction.Sum ("D1: D32")Slutt Sub |
Du kan ha opptil 30 argumenter i SUM -funksjonen. Hvert av argumentene kan også referere til en rekke celler.
Dette eksemplet nedenfor vil legge til cellene D1 til D9
123 | Sub TestSum ()Område ("D10") = Application.WorksheetFunction.SUM ("D1: D9")Slutt Sub |
Eksemplet nedenfor vil legge til et område i kolonne D og et område i kolonne F. Hvis du ikke skriver applikasjonsobjektet, antas det.
123 | Sub TestSum ()Område ("D25") = WorksheetFunction.SUM (Område ("D1: D24"), Område ("F1: F24"))Slutt Sub |
Legg merke til for et enkelt celleområde at du ikke trenger å spesifisere ordet ‘Range’ i formelen foran cellene, det antas av koden. Men hvis du bruker flere argumenter, må du gjøre det.
Tilordne et sumresultat til en variabel
Det kan være lurt å bruke resultatet av formelen din andre steder i koden i stedet for å skrive det direkte tilbake til og Excel Range. Hvis dette er tilfelle, kan du tilordne resultatet til en variabel som skal brukes senere i koden.
1234567 | Sub AssignSumVariable ()Dim resultat som Double'Tilordne variabelenresult = WorksheetFunction.SUM (Range ("G2: G7"), Range ("H2: H7"))'Vis resultatetMsgBox "Totalen av områdene er" og resultatSlutt Sub |
Sum et rekkeviddeobjekt
Du kan tilordne en gruppe celler til Range -objektet, og deretter bruke det Range -objektet med Arbeidsark Funksjon gjenstand.
123456789 | Sub TestSumRange ()Dim rng As Range'tilordne celleområdetSett rng = Range ("D2: E10")'bruk området i formelenOmråde ("E11") = WorksheetFunction.SUM (rng)'slipp rekkeviddeobjektetSett rng = ingentingSlutt Sub |
Sum flere objektområder
På samme måte kan du summere flere rekkeviddeobjekter.
123456789101112 | Sub TestSumMultipleRanges ()Dim rngA As RangeDim rngB som område'tilordne celleområdetSett rngA = Range ("D2: D10")Sett rngB = Range ("E2: E10")'bruk området i formelenOmråde ("E11") = WorksheetFunction.SUM (rngA, rngB)'slipp rekkeviddeobjektetSett rngA = IngentingSett rngB = IngentingSlutt Sub |
Sum hele kolonnen eller raden
Du kan også bruke Sum -funksjonen til å legge til en hel kolonne eller en hel rad
Denne fremgangsmåten nedenfor vil legge til alle de numeriske cellene i kolonne D.
123 | Sub TestSum ()Område ("F1") = WorksheetFunction.SUM (område ("D: D")Slutt Sub |
Selv om denne fremgangsmåten nedenfor vil legge til alle de numeriske cellene i rad 9.
123 | Sub TestSum ()Område ("F2") = WorksheetFunction.SUM (område ("9: 9")Slutt Sub |
Sum en matrise
Du kan også bruke WorksheetFunction.Sum til å legge opp verdier i en matrise.
123456789101112 | Sub TestArray ()Dim intA (1 til 5) som heltallDim SumArray som heltall'fyll ut matrisenintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'legg til matrisen og vis resultatetMsgBox WorksheetFunction.SUM (intA)Slutt Sub |
Bruke SumIf -funksjonen
En annen regnearkfunksjon som kan brukes er SUMIF -funksjonen.
123 | Sub TestSumIf ()Range ("D11") = WorksheetFunction.SUMIF (Range ("C2: C10"), 150, Range ("D2: D10"))Slutt Sub |
Fremgangsmåten ovenfor vil bare legge til cellene i område (D2: D10) hvis den tilsvarende cellen i kolonne C = 150.
Sum formel
Når du bruker Regneark Funksjon.SUM for å legge til en sum i et område i regnearket, returneres en statisk sum, ikke en fleksibel formel. Dette betyr at når tallene i Excel endres, vil verdien som er returnert av Arbeidsark Funksjon vil ikke endre seg.
I eksemplet ovenfor har prosedyren TestSum lagt opp rekkevidde (D2: D10) og resultatet er satt i D11. Som du kan se i formellinjen, er dette resultatet en figur og ikke en formel.
Hvis noen av verdiene derfor endres i området (D2: D10), vil resultatet i D11 IKKE endring.
I stedet for å bruke Regneark Funksjon.SUM, kan du bruke VBA til å bruke en sumfunksjon på en celle ved hjelp av Formel eller FormelR1C1 metoder.
Formelmetode
Formelmetoden lar deg peke spesifikt på et område av celler, for eksempel: D2: D10 som vist nedenfor.
123 | Sub TestSumFormulaOmråde ("D11"). Formel = "= SUMME (D2: D10)"Slutt Sub |
FormulaR1C1 Metode
FromulaR1C1 -metoden er mer fleksibel ved at den ikke begrenser deg til et angitt celleområde. Eksemplet nedenfor gir oss det samme svaret som det ovenfor.
123 | Sub TestSumFormula ()Område ("D11"). FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"Slutt Sub |
For å gjøre formelen mer fleksibel, kan vi imidlertid endre koden slik at den ser slik ut:
123 | Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"Slutt Sub |
Uansett hvor du er i regnearket, vil formelen legge til de 8 cellene rett over det og plassere svaret i ActiveCell. Området inne i SUM -funksjonen må refereres til ved bruk av rad (R) og kolonne (C) syntaks.
Begge disse metodene lar deg bruke dynamiske Excel -formler i VBA.
Det vil nå være en formel i D11 i stedet for en verdi.