Dieses Tutorial zeigt Ihnen, wie Sie die Excel-Summe-Funktion in VBA verwenden
Die Summenfunktion ist eine der am häufigsten verwendeten Excel-Funktionen und wahrscheinlich die erste, die Excel-Benutzer verwenden lernen. VBA hat eigentlich kein Äquivalent - ein Benutzer muss die integrierte Excel-Funktion in VBA mit dem verwenden ArbeitsblattFunktion Objekt.
Summe ArbeitsblattFunktion
Das WorksheetFunction-Objekt kann verwendet werden, um die meisten Excel-Funktionen aufzurufen, die im Dialogfeld Funktion einfügen in Excel verfügbar sind. Die SUM-Funktion ist eine davon.
123 | UntertestfunktionRange("D33") = Application.WorksheetFunction.Sum("D1:D32")End Sub |
Sie können bis zu 30 Argumente in der SUM-Funktion haben. Jedes der Argumente kann sich auch auf einen Zellbereich beziehen.
In diesem Beispiel unten werden die Zellen D1 bis D9 addiert
123 | Teiltestsumme()Range("D10") = Application.WorksheetFunction.SUM("D1:D9")End Sub |
Im folgenden Beispiel werden ein Bereich in Spalte D und ein Bereich in Spalte F addiert. Wenn Sie das Anwendungsobjekt nicht eingeben, wird es angenommen.
123 | Teiltestsumme()Range("D25") = WorksheetFunction.SUM (Range("D1:D24"), Range("F1:F24"))End Sub |
Beachten Sie, dass Sie für einen einzelnen Zellbereich das Wort „Bereich“ in der Formel vor den Zellen nicht angeben müssen, es wird vom Code angenommen. Wenn Sie jedoch mehrere Argumente verwenden, müssen Sie dies tun.
Zuweisen eines Summenergebnisses zu einer Variablen
Möglicherweise möchten Sie das Ergebnis Ihrer Formel an anderer Stelle im Code verwenden, anstatt es direkt in den Excel-Bereich zurückzuschreiben. In diesem Fall können Sie das Ergebnis einer Variablen zuweisen, die später in Ihrem Code verwendet wird.
1234567 | Sub AssignSumVariable()Ergebnis als Double dimmen'Variable zuweisenresult = WorksheetFunction.SUM(Range("G2:G7"), Range("H2:H7"))'Ergebnis anzeigenMsgBox "Die Summe der Bereiche ist" & ErgebnisEnd Sub |
Ein Range-Objekt summieren
Sie können dem Range-Objekt eine Gruppe von Zellen zuweisen und dieses Range-Objekt dann mit dem ArbeitsblattFunktion Objekt.
123456789 | Unter TestSumRange()Dim rng As Range'Zellbereich zuweisenSetze rng = Range("D2:E10")'benutze den Bereich in der FormelRange("E11") = WorksheetFunction.SUM(rng)'Entferne das EntfernungsobjektSetze rng = NichtsEnd Sub |
Mehrere Bereichsobjekte summieren
Auf ähnliche Weise können Sie mehrere Bereichsobjekte summieren.
123456789101112 | Unter TestSumMultipleRanges()Dim rngA als BereichDim rngB als Bereich'Zellbereich zuweisenSetze rngA = Range("D2:D10")Setze rngB = Range("E2:E10")'benutze den Bereich in der FormelRange("E11") = WorksheetFunction.SUM(rngA, rngB)'Entferne das EntfernungsobjektSetze rngA = NichtsSetze rngB = NichtsEnd Sub |
Gesamte Spalte oder Zeile summieren
Sie können auch die Sum-Funktion verwenden, um eine ganze Spalte oder eine ganze Zeile zu addieren
Dieses Verfahren unten addiert alle numerischen Zellen in Spalte D.
123 | Teiltestsumme()Range("F1") = WorksheetFunction.SUM(Range("D:D")End Sub |
Während dieses Verfahren unten alle numerischen Zellen in Zeile 9 addiert.
123 | Teiltestsumme()Range("F2") = WorksheetFunction.SUM(Range("9:9")End Sub |
Summiere ein Array
Sie können auch die WorksheetFunction.Sum verwenden, um Werte in einem Array zu addieren.
123456789101112 | Unter TestArray()Dim intA(1 bis 5) As IntegerDim SumArray As Integer'das Array auffüllenintA(1) = 15intA(2) = 20intA(3) = 25intA(4) = 30intA(5) = 40'addiere das Array und zeige das ErgebnisMsgBox WorksheetFunction.SUM(intA)End Sub |
Verwenden der SumIf-Funktion
Eine weitere Arbeitsblattfunktion, die verwendet werden kann, ist die SUMIF-Funktion.
123 | Sub TestSumIf()Range("D11") = WorksheetFunction.SUMIF(Range("C2:C10"), 150, Range("D2:D10"))End Sub |
Das obige Verfahren addiert die Zellen in Range (D2: D10) nur, wenn die entsprechende Zelle in Spalte C = 150 ist.
Summenformel
Wenn Sie das verwenden ArbeitsblattFunktion.SUM Um einem Bereich in Ihrem Arbeitsblatt eine Summe hinzuzufügen, wird eine statische Summe zurückgegeben, keine flexible Formel. Das bedeutet, wenn sich Ihre Zahlen in Excel ändern, wird der Wert, der von der ArbeitsblattFunktion wird sich nicht ändern.
Im obigen Beispiel hat die Prozedur TestSum Range(D2:D10) aufsummiert und das Ergebnis in D11 eingetragen. Wie Sie in der Bearbeitungsleiste sehen können, handelt es sich bei diesem Ergebnis um eine Zahl und nicht um eine Formel.
Wenn sich daher einer der Werte im Bereich (D2:D10) ändert, wird das Ergebnis in D11 NICHT Veränderung.
Anstatt die ArbeitsblattFunktion.SUM, können Sie mit VBA eine Summenfunktion auf eine Zelle anwenden, indem Sie die Formel oder FormelR1C1 Methoden.
Formelmethode
Mit der Formelmethode können Sie gezielt auf einen Zellbereich zeigen, zB: D2:D10, wie unten gezeigt.
123 | Sub TestSumFormulaBereich("D11").Formel = "=SUMME(D2:D10)"End Sub |
FormelR1C1-Methode
Die FromulaR1C1-Methode ist flexibler, da sie Sie nicht auf einen bestimmten Zellbereich einschränkt. Das folgende Beispiel gibt uns die gleiche Antwort wie das obige.
123 | Unter TestSummenFormel()Range("D11").FormulaR1C1 = "=SUMME(R[-9]C:R[-1]C)"End Sub |
Um die Formel jedoch flexibler zu gestalten, könnten wir den Code so ändern, dass er wie folgt aussieht:
123 | Unter TestSummenFormel()ActiveCell.FormulaR1C1 = "=SUMME(R[-9]C:R[-1]C)"End Sub |
Wo auch immer Sie sich in Ihrem Arbeitsblatt befinden, die Formel addiert dann die 8 Zellen direkt darüber und fügt die Antwort in Ihre ActiveCell ein. Auf den Bereich innerhalb der SUM-Funktion muss mit der Zeilen- (R) und Spalte (C)-Syntax verwiesen werden.
Mit beiden Methoden können Sie dynamische Excel-Formeln in VBA verwenden.
In D11 gibt es jetzt eine Formel anstelle eines Wertes.