Google Tabellen: Summenbildung nach Monat und weiterem Kriterium

Luckyone

Newbie
Registriert
Juni 2023
Beiträge
2
Hallo zusammen,

mit der Formel
=SUMMENPRODUKT((MONAT('Tabelle A'!$A$2:$A$1001)=5)(JAHR('Tabelle A'!$A$2:$A$1001)=2023)('Tabelle A'!$D$2:$D$1001))
bilde ich die Summe aus Werten in Spalte D, sofern in Spalte A ein Datum im Monat Mai 2023 eingetragen ist.

Kann ich dieser Formel ein weiteres Kriterium hinzufügen?
Nämlich dass Spalte G entweder den Eintrag "Eintrag1" oder den Eintrag "Eintrag2" enthält.
Oder braucht es dazu eine komplett neue Formel?

Ich bin eher Gelegenheits-User und komme hier leider auf keinen grünen Zweig.

Danke schonmal für eure Hilfe!

Gruß,
Luckyone
 
Etwas länglich, aber funktioniert:

=SUMMENPRODUKT((MONAT('Tabelle A'!$A$2:$A$1001)=5)(JAHR('Tabelle A'!$A$2:$A$1001)=2023)('Tabelle A'!$G$2:$G$1001)="Eintrag 1")('Tabelle A'!$D$2:$D$1001))+SUMMENPRODUKT((MONAT('Tabelle A'!$A$2:$A$1001)=5)(JAHR('Tabelle A'!$A$2:$A$1001)=2023)('Tabelle A'!$G$2:$G$1001)="Eintrag 2")('Tabelle A'!$D$2:$D$1001))
 
"Etwas" kürzer und völlig anderer Ansatz, basierend auf FILTER():
Datenbasis:
DatumWertEintrag
15.4.23xx10xx126
29.4.23xx11xx2
13.5.23xx12xx1
27.5.23xx13xx3
30.5.23xx14xx2
24.6.23xx15xx1
8.7.23xx16xx1
Code:
=ARRAYFORMULA(SUM(FILTER(D2:D8;(TEXT(A2:A8;"yymm")="2305")*((G2:G8=1)+(G2:G8=2)))))
ScrShot1.png

Ergänzung ()

Ich sehe gerade, dass ARRAYFORMULA() unnötig ist, weil FILTER() dies implizit festlegt.
Es reicht folglich:
Code:
=SUM(FILTER(D2:D8;(TEXT(A2:A8;"yymm")="2305")*((G2:G8=1)+(G2:G8=2))))

Außerdem ist mir erst heute aufgefallen, dass Google Sheets mittlerweile auch LET() kennt!
Ist hier zwar "Kanonen auf Spatzen", aber gut zu wissen, dass man Variablenauslagerungen in einer komplexen Formel tätigen kann.
Für obiges Beispiel (jetzt dynamisch):
Code:
=LET(letzte;COUNTA(A:A);
Dat;A2:Index(A:A;letzte);
Wert;D2:INDEX(D:D;letzte);
Eintrag;G2:INDEX(G:G;letzte);
f;FILTER(Wert;(TEXT(Dat;"yymm")="2305")*((Eintrag=1)+(Eintrag=2)));
SUM(f))
 
Zuletzt bearbeitet:
Hallo Leute,

spät aber doch: Danke für eure Antworten.
Den Vorschlag von @Cave Johnson hatte ich direkt ausprobiert, bin aber irgendwie nicht zurecht gekommen - liegt vermutlich an mir, trotzdem danke für die schnelle Antwort.
Der FILTER()-Hack von @RPP63 funktioniert perfekt für meinen Anwendungsfall. Leider bin ich erst jetzt dazu gekommen, ihn zu testen.
Der LET()-Ansatz ist vermutlich was für Fortgeschrittene, ich bin nicht sicher ob ich den durchblicke aber vielleicht kann ja jemand anderes damit arbeiten.

Jedenfalls danke, das war eine große Hilfe!

Gruß
 
Luckyone schrieb:
Der LET()-Ansatz ist vermutlich was für Fortgeschrittene
Kommt drauf an, was Du unter "fortgeschritten" ansiehst.
LET() ist imo ein gamechanger, bietet diese Funktion doch die Möglichkeit, ein "Programm" innerhalb einer einzigen Zelle zu schreiben!
Heißt: Deklarierung von Variablen, die im Laufe der Formelauswertung nur einmal berechnet werden müssen.
Macht natürlich nur dann Sinn, wenn sie auch mehrfach verwendet werden.

Ein "schönes" Beispiel ist die Osterformel (Gleichungssystem) von Lichtenberg.
http://de.wikipedia.org/wiki/Gaußsche_Osterformel#Eine_erg.C3.A4nzte_Osterformel

So etwas lässt sich mit LET() prima abbilden:
Code:
=LET(j;2023;
    A;INT(j/100);
    B;15+INT((3*A+3)/4)-INT((8*A+13)/25);
    C;2-INT((3*A+3)/4);
    D;MOD(j;19);
    E;MOD(19*D+B;30);
    F;INT((E+INT(D/11))/29);
    G;21+E-F;
    H;7-MOD(j+INT(j/4)+C;7);
    I;7-MOD(G-H;7);
    OS;G+I;
    K; DATE(j;3;OS);
    K)
Und ja!
Selbstverständlich weiß ich, dass Libre Office Calc =OSTERSONNTAG() kennt.
Mir geht es hier aber um das Prinzip.
 
Zurück
Oben