VBA-Summenfunktion (Bereiche, Spalten und mehr)

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.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave