Microsoft Excel

Das Portal zum Thema Excel-Formeln

Gruppe: Summenfunktionen

Beitrag: SUMMEWENN mit 2 Bedingungen über viele Tabellen

Aufgabe
Es soll über mehrere Tabellen mit mehreren Bedingungen summiert werden.

Lösung
Beispiel:
Von Tabelle1 bis Tabelle10 sollen alle Zellen von C1:C100 summiert werden, wenn in Spalte A "x" und in Spalte B "y" steht.

{=SUMME((T(INDIREKT("Tabelle"&SPALTE(A:J)&"!A"&ZEILE(1:100)))="x")*(T(INDIREKT("Tabelle"&SPALTE(A:J)&"!B"&ZEILE(1:100)))="y")*(N(INDIREKT("Tabelle"&SPALTE(A:J)&"!C"&ZEILE(1:100)))))}

Ergänzung vom 05.11.2005:

Das Ganze funktioniert auch für nicht indizierbare Blattnamen - insofern ist die Erläuterung unten widerlegt:

Die Blätter heissen "JensF", "WF" und "Boris":

{=SUMME((T(INDIREKT("'"&{"JensF"."WF"."Boris"}&"'!A"&ZEILE(1:100)))="x")*(T(INDIREKT("'"&{"JensF"."WF"."Boris"}&"'!B"&ZEILE(1:100)))="y")*(N(INDIREKT("'"&{"JensF"."WF"."Boris"}&"'!C"&ZEILE(1:100)))))}

oder auch mit SUMMENPRODUKT ohne Abschluss als Arrayformel:
=SUMMENPRODUKT((T(INDIREKT("'"&{"JensF"."WF"."Boris"}&"'!A"&ZEILE(1:100)))="x")*(T(INDIREKT("'"&{"JensF"."WF"."Boris"}&"'!B"&ZEILE(1:100)))="y")*(N(INDIREKT("'"&{"JensF"."WF"."Boris"}&"'!C"&ZEILE(1:100)))))

Stehen die Blattnamen vertikal in D1:D3, dann muss D1:D3 noch mit MTRANS gedreht werden (Array):
{=SUMME((T(INDIREKT("'"&MTRANS(D1:D3)&"'!A"&ZEILE(1:100)))="x")*(T(INDIREKT("'"&MTRANS(D1:D3)&"'!B"&ZEILE(1:100)))="y")*(N(INDIREKT("'"&MTRANS(D1:D3)&"'!C"&ZEILE(1:100)))))}

Stehen die Blattnamen horizontal (D1:F1), dann natürlich ohne MTRANS.


Erweiterung von Christian Hapke 08.03.2008:
Wenn die Suchkriterien Zahlen sind, z.B. 777 und 888 dann:
{=SUMME((N(INDIREKT("Tabelle"&SPALTE(A:J)&"!A"&ZEILE($1:$100)))=777)*(N(INDIREKT("Tabelle"&SPALTE(A:J)&"!B"&ZEILE($1:$100)))=888)*(N(INDIREKT("Tabelle"&SPALTE(A:J)&"!C"&ZEILE($1:$100)))))}



Erläuterung
Die Anzahl der zu berechnenden Zeilen wird mit ZEILE(1:100) festgelegt.
Die Anzahl der zu durchsuchenden Tabellen ergibt sich aus SPALTE(A:J), denn J ist die 10. Spalte.

"Die Tabellennamen müssen indexierbar (gleichnamig mit fortlaufender Nr.) sein, um daraus einen Array bilden zu können." - stimmt so jetzt nicht mehr (wenngleich es das Ganze vereinfacht).