Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Summewenn mit VBA schreiben

Summewenn mit VBA schreiben
03.11.2016 19:23:56
Tyroler
Hallo Zusammen,
hätte frage bzgl. der Summewenns funktion im Excel.
Ich hab mit dem Makrorekorder die Summewennsfunktion angewendet.
Funktioniert auch soweit ganz gut.
WEnn ich nun das Makro aktiviere, schreibt er mir die komplette Formel in jede Zelle was wie folgt aussieht:
Range("L3").Select
ActiveCell.FormulaR1C1 = _
"=SUMIFS([Mappe1.xlsx]PROMIR10_TMP506!C13,[EPD_MA_31.xlsx]PROMIR10_TMP506!C5,R3C4,[Mappe1.xlsx]PROMIR10_TMP506!C6,RC[-2],[Mappe1.xlsx]PROMIR10_TMP506!C8,R1C12)"
Sprich wenn drei Bedingungen in der Mappe 1 erfüllt sind, dann soll er mir die Summe bilden und in der Aktive Dokument ausgeben.
Kann man das mittels einem VBA Code "eleganter" lösen, bzw. dass nur das ERgbnis als Zahl in jeder Zelle steht?
Vielen Dank für eure Hilfe!
Gruß Tyroler
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summewenn mit VBA schreiben
03.11.2016 19:47:33
Daniel
HI
kommt darauf ein.
wenn du nur ein einziges Summewenns hast würde es mit Worksheetfunction.SumIfs gehen:
Range("L3").Value = Worksheetfunction.SumIfs(Workbooks("Mappe1.xlsx").Sheets("PROMIR10_TMP506").Columns(13), Workbooks("EPD_MA_31.xlsx").Sheets(PROMIR10_TMP506").Columns(5), Cells(3, 4), Workbooks("Mappe1.xlsx").Sheets("PROPMIR10_TMP506").Columns(6), Cells(3, 10), workbooks("Mappe1.xlsx").Sheets("PROMIR10_TMP506").Columns(8), Cells(1, 12))
wenn du mehrere davon hast die in einer Zeile oder Spalte stehen und die die gleiche Formel haben, ist es günstiger, die Formel in alle Zellen gleichzeitig zu schreiben und dann die Formeln durch den Wert zu ersetzen:
With Range("L3:L?")
.FormulaR1C1 = "=SumIfs(......)"
.Formula = .Value
End with
Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Summewenn mit VBA elegant umsetzen


Schritt-für-Schritt-Anleitung

Um die SUMMEWENN-Funktion in Excel mithilfe von VBA effektiv zu nutzen, kannst du folgende Schritte befolgen:

  1. Makro erstellen: Öffne den VBA-Editor (ALT + F11) und erstelle ein neues Modul.

  2. Code einfügen: Füge den folgenden Code ein, der die SUMMEWENN-Funktion mit den gewünschten Parametern anwendet:

    Sub SummewennVBA()
        Dim ws1 As Worksheet
        Dim ws2 As Worksheet
        Set ws1 = Workbooks("Mappe1.xlsx").Sheets("PROMIR10_TMP506")
        Set ws2 = ThisWorkbook.Sheets("DeinBlatt")
    
        ws2.Range("L3").Value = Application.WorksheetFunction.SumIfs( _
            ws1.Columns(13), _
            ws1.Columns(5), ws2.Cells(3, 4), _
            ws1.Columns(6), ws2.Cells(3, 10), _
            ws1.Columns(8), ws2.Cells(1, 12)
        )
    End Sub
  3. Makro ausführen: Schließe den Editor und führe das Makro aus, um das Ergebnis in Zelle L3 anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Subscript out of range"
    Lösung: Überprüfe, ob die Arbeitsmappen und -blätter korrekt benannt sind. Achte darauf, dass Mappe1.xlsx geöffnet ist.

  • Fehler: Ungültige Formel
    Lösung: Stelle sicher, dass die Spaltenreferenzen und Zellen korrekt angegeben sind, insbesondere bei Verwendung von WorksheetFunction.


Alternative Methoden

Wenn du mehrere Zellen gleichzeitig füllen möchtest, kannst du den folgenden Code verwenden:

Sub SummewennMultiple()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Set ws1 = Workbooks("Mappe1.xlsx").Sheets("PROMIR10_TMP506")
    Set ws2 = ThisWorkbook.Sheets("DeinBlatt")

    With ws2.Range("L3:L10")
        .FormulaR1C1 = "=SUMIFS([Mappe1.xlsx]PROMIR10_TMP506!C13,[Mappe1.xlsx]PROMIR10_TMP506!C5,R3C4,[Mappe1.xlsx]PROMIR10_TMP506!C6,RC[-2],[Mappe1.xlsx]PROMIR10_TMP506!C8,R1C12)"
        .Value = .Value
    End With
End Sub

Dieser Code ersetzt die Formeln durch die berechneten Werte in den Zellen L3 bis L10.


Praktische Beispiele

Hier sind einige praktische Anwendungen der SUMMEWENN-Funktion mit VBA:

  1. Summe nach Kriterien: Summe der Verkaufszahlen basierend auf dem Produkttyp.
  2. Datenaggregation: Aggregiere Daten aus mehreren Sheets in einer Übersicht.
  3. Bedingte Summierung: Summiere nur jene Werte, die bestimmten Bedingungen entsprechen, z.B. nur die Verkäufe über einem bestimmten Betrag.

Tipps für Profis

  • Nutze Error Handling (z.B. On Error Resume Next), um potenzielle Fehler im Code abzufangen, ohne das Makro zu stoppen.
  • Verwende Option Explicit am Anfang des Moduls, um sicherzustellen, dass alle Variablen deklariert werden.
  • Teste deinen Code immer in einer Kopie deiner Arbeitsmappe, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich die SUMMEWENN-Funktion auch in anderen Excel-Versionen verwenden?
Ja, die SUMMEWENN-Funktion ist in nahezu allen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016 und 2019.

2. Wie kann ich den Code anpassen, um mehrere Bedingungen zu berücksichtigen?
Verwende die SUMMEWENNS-Funktion in deinem VBA-Code, um mehrere Kriterien anzugeben. Der Code muss entsprechend angepasst werden, um diese Funktion zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige