VBA Sum -funktion (intervall, kolumner och mer)

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.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave