Supportnet / Forum / Tabellenkalkulation
SumIf vereinfachen?
Frage
Hallo,
ich habe folgenden VBA-Code erstellt:
Sub Summe_ZS()
Range("V3").Value = Application.WorksheetFunction _
.SumIf(Range("D4:D22", "G4:G22"), "D", Range("C4:C22", "F4:F22"))
Range("V4").Value = Application.WorksheetFunction _
.SumIf(Range("J4:J22", "M4:M22"), "D", Range("I4:I22", "L4:L22"))
Range("V5").Value = Application.WorksheetFunction _
.SumIf(Range("P4:P22", "M4:M22"), "D", Range("O4:O22", "S4:S22"))
Range("V7").Value = Application.WorksheetFunction _
.SumIf(Range("D4:D22", "G4:G22"), "E", Range("C4:C22", "F4:F22"))
Range("V8").Value = Application.WorksheetFunction _
.SumIf(Range("J4:J22", "M4:M22"), "E", Range("I4:I22", "L4:L22"))
Range("V9").Value = Application.WorksheetFunction _
.SumIf(Range("P4:P22", "M4:M22"), "E", Range("O4:O22", "S4:S22"))
Range("Q25").Value = Application.WorksheetFunction _
.Sum(Range("V3:V5"))
Range("Q26").Value = Application.WorksheetFunction _
.Sum(Range("V7:V9"))
End Sub
Dieser funktioniert. Allerdings suche ich nach einer Lösung ohne Hilfsspalten. Ist es möglich die Summe in Q25 bzw.in Q26 direkt zu lösen. Ich benutze hier die Zelle V3,V4, V5 bzw.V7,V8, V9 um Zwischensummen zu bilden, da ich keine Möglichkeit gefunden habe bei SumIf mehr als zwei nicht zusammenhängende Bereiche anzugeben.
Gruss sas
Antwort 1 von rainberg
Hallo sas,
nach meinem Verständnis ist die Syntax Deiner SumIf-Formeln falsch.
Es wird laut Onlinehilfe immer nur eine Spalte abgefragt und summiert.
Mach´s mal so:
Gruß
Rainer
nach meinem Verständnis ist die Syntax Deiner SumIf-Formeln falsch.
Es wird laut Onlinehilfe immer nur eine Spalte abgefragt und summiert.
Mach´s mal so:
Sub Summe_ZS()
Range("Q25").Value = Application.WorksheetFunction.Sum _
(WorksheetFunction.SumIf(Range("D4:D22"), "D", Range("C4:C22")), _
WorksheetFunction.SumIf(Range("G4:G22"), "D", Range("F4:F22")), _
WorksheetFunction.SumIf(Range("J4:J22"), "D", Range("I4:I22")), _
WorksheetFunction.SumIf(Range("M4:M22"), "D", Range("L4:L22")), _
WorksheetFunction.SumIf(Range("P4:P22"), "D", Range("O4:O22")), _
WorksheetFunction.SumIf(Range("M4:M22"), "D", Range("S4:S22")))
Range("Q26").Value = Application.WorksheetFunction.Sum _
(WorksheetFunction.SumIf(Range("D4:D22"), "E", Range("C4:C22")), _
WorksheetFunction.SumIf(Range("G4:G22"), "E", Range("F4:F22")), _
WorksheetFunction.SumIf(Range("J4:J22"), "E", Range("I4:I22")), _
WorksheetFunction.SumIf(Range("M4:M22"), "E", Range("L4:L22")), _
WorksheetFunction.SumIf(Range("P4:P22"), "E", Range("O4:O22")), _
WorksheetFunction.SumIf(Range("M4:M22"), "E", Range("S4:S22")))
End SubGruß
Rainer
Antwort 2 von sas
Hallo Rainer,
danke für die Hilfe und den Hinweis.
Gruss Sarah
danke für die Hilfe und den Hinweis.
Gruss Sarah

