Denna handledning visar dig hur du använder Excel Sum -funktionen i VBA
Summa -funktionen är en av de mest använda Excel -funktionerna, och förmodligen den första som Excel -användare lär sig använda. VBA har faktiskt inte en motsvarighet - en användare måste använda den inbyggda Excel -funktionen i VBA med hjälp av WorkSheetFunction objekt.
Summa arbetsbladFunktion
Objektet WorksheetFunction kan användas för att anropa de flesta Excel -funktioner som är tillgängliga i dialogrutan Infoga funktion i Excel. SUM -funktionen är en av dem.
123 | SubtestfunktionRange ("D33") = Application.WorksheetFunction.Sum ("D1: D32")Avsluta Sub |
Du kan ha upp till 30 argument i SUM -funktionen. Var och en av argumenten kan också referera till ett cellområde.
Detta exempel nedan kommer att lägga till cellerna D1 till D9
123 | Sub TestSum ()Område ("D10") = Application.WorksheetFunction.SUM ("D1: D9")Avsluta Sub |
Exemplet nedan lägger till ett intervall i kolumn D och ett område i kolumn F. Om du inte skriver applikationsobjektet antas det.
123 | Sub TestSum ()Range ("D25") = WorksheetFunction.SUM (Range ("D1: D24"), Range ("F1: F24"))Avsluta Sub |
Lägg märke till för ett enda cellområde att du inte behöver ange ordet ‘Range’ i formeln framför cellerna, det antas av koden. Men om du använder flera argument måste du göra det.
Tilldela en summa till en variabel
Du kanske vill använda resultatet av din formel någon annanstans i koden istället för att skriva den direkt tillbaka till och Excel Range. Om så är fallet kan du tilldela resultatet till en variabel som ska användas senare i din kod.
1234567 | Sub AssignSumVariable ()Dim resultat som dubbel'Tilldela variabelnresult = WorksheetFunction.SUM (Range ("G2: G7"), Range ("H2: H7"))'Visa resultatetMsgBox "Totalen för intervallerna är" och resultatAvsluta Sub |
Summa ett intervallobjekt
Du kan tilldela en grupp celler till Range -objektet och sedan använda det Range -objektet med ArbetsbladFunktion objekt.
123456789 | Sub TestSumRange ()Dim rng As Range'tilldela cellintervalletStäll in rng = Range ("D2: E10")'använd intervallet i formelnOmråde ("E11") = WorksheetFunction.SUM (rng)'släpp intervallobjektetStäll in rng = ingentingAvsluta Sub |
Summa flera intervallobjekt
På samma sätt kan du summera flera intervallobjekt.
123456789101112 | Sub TestSumMultipleRanges ()Dim rngA As RangeDim rngB som intervall'tilldela cellintervalletStäll in rngA = Range ("D2: D10")Ställ in rngB = Range ("E2: E10")'använd intervallet i formelnOmråde ("E11") = WorksheetFunction.SUM (rngA, rngB)'släpp intervallobjektetStäll in rngA = ingentingStäll in rngB = IngentingAvsluta Sub |
Summa hela kolumnen eller raden
Du kan också använda Sum -funktionen för att lägga till en hel kolumn eller en hel rad
Denna procedur nedan kommer att lägga till alla numeriska celler i kolumn D.
123 | Sub TestSum ()Range ("F1") = WorksheetFunction.SUM (Range ("D: D")Avsluta Sub |
Medan denna procedur nedan kommer att lägga till alla numeriska celler i rad 9.
123 | Sub TestSum ()Område ("F2") = WorksheetFunction.SUM (intervall ("9: 9")Avsluta Sub |
Summa en matris
Du kan också använda WorksheetFunction.Sum för att lägga till värden i en array.
123456789101112 | Sub TestArray ()Dim intA (1 till 5) som heltalDim SumArray som heltal'fyll i matrisenintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'lägg till matrisen och visa resultatetMsgBox WorksheetFunction.SUM (intA)Avsluta Sub |
Använda SumIf -funktionen
En annan kalkylbladsfunktion som kan användas är SUMIF -funktionen.
123 | Sub TestSumIf ()Range ("D11") = WorksheetFunction.SUMIF (Range ("C2: C10"), 150, Range ("D2: D10"))Avsluta Sub |
Proceduren ovan lägger bara till cellerna i intervall (D2: D10) om motsvarande cell i kolumn C = 150.
Summa formel
När du använder ArbetsbladFunktion.SUM för att lägga till en summa i ett intervall i ditt kalkylblad, returneras en statisk summa, inte en flexibel formel. Det betyder att när dina siffror i Excel ändras, värdet som har returnerats av ArbetsbladFunktion kommer inte att förändras.
I exemplet ovan har proceduren TestSum lagt till intervall (D2: D10) och resultatet har lagts till i D11. Som du kan se i formelfältet är detta resultat en siffra och inte en formel.
Om något av värdena därför ändras i intervallet (D2: D10), kommer resultatet i D11 INTE förändra.
Istället för att använda ArbetsbladFunktion.SUM, kan du använda VBA för att tillämpa en Sum -funktion på en cell med Formel eller FormelR1C1 metoder.
Formelmetod
Med formelmetoden kan du peka specifikt på ett cellintervall, t.ex.: D2: D10 enligt nedan.
123 | Sub TestSumFormulaOmråde ("D11"). Formel = "= SUMMA (D2: D10)"Avsluta Sub |
FormelR1C1 -metod
Metoden FromulaR1C1 är mer flexibel eftersom den inte begränsar dig till ett angivet cellintervall. Exemplet nedan ger oss samma svar som ovan.
123 | Sub TestSumFormula ()Område ("D11"). FormulaR1C1 = "= SUMMA (R [-9] C: R [-1] C)"Avsluta Sub |
För att göra formeln mer flexibel kan vi dock ändra koden så här:
123 | Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= SUMMA (R [-9] C: R [-1] C)"Avsluta Sub |
Var du än befinner dig i kalkylbladet kommer formeln att lägga till de 8 cellerna direkt ovanför det och placera svaret i din ActiveCell. Området inuti SUM -funktionen måste hänvisas till med syntaxen Rad (R) och Kolumn (C).
Båda dessa metoder gör att du kan använda dynamiska Excel -formler inom VBA.
Det kommer nu att finnas en formel i D11 istället för ett värde.