Excel-Formel: Summenspalten basierend auf benachbarten Kriterien -

Generische Formel

=SUMPRODUCT(--(range1=criteria),range2)

Zusammenfassung

Um Summen- oder Zwischensummenspalten basierend auf Kriterien in benachbarten Spalten zu summieren, können Sie eine Formel verwenden, die auf der SUMPRODUCT-Funktion basiert. Im gezeigten Beispiel lautet die Formel in J5:

=SUMPRODUCT(--($B5:$H5=J$4),$C5:$I5)

Erläuterung

Im Kern verwendet diese Formel SUMPRODUCT, um die Produkte zweier Arrays zu multiplizieren und dann zu summieren: Array1 und Array2 . Das erste Array, Array1, ist so eingerichtet, dass es als "Filter" fungiert, um nur Werte zuzulassen, die Kriterien erfüllen.

Array1 verwendet einen Bereich, der in der ersten Spalte beginnt und Werte enthält, die Kriterien erfüllen müssen. Diese "Kriterienwerte" befinden sich in einer Spalte links und unmittelbar neben den "Datenwerten".

Das Kriterium wird als einfacher Test angewendet, der ein Array von TRUE- und FALSE-Werten erstellt:

--($B5:$H5=J$4)

Dieses Bit der Formel "testet" jeden Wert im ersten Array anhand der angegebenen Kriterien und verwendet dann ein doppelt negatives (-), um die resultierenden TRUE- und FALSE-Werte auf 1 und 0 zu zwingen. Das Ergebnis sieht folgendermaßen aus:

(1,0,0,0,1,0,1)

Beachten Sie, dass 1s den Spalten 1,5 und 7 entsprechen, die die Kriterien von "A" erfüllen.

Für array2 innerhalb von SUMPRODUCT verwenden wir einen Bereich, der um eine Spalte nach rechts "verschoben" ist. Dieser Bereich beginnt mit der ersten Spalte, die zu summierende Werte enthält, und endet mit der letzten Spalte, die zu summierende Werte enthält.

In der Beispielformel in J5 haben wir nach dem Auffüllen der Arrays Folgendes:

=SUMPRODUCT((1,0,0,0,1,0,1),(1,"B",1,"A",1,"A",1))

Da SUMPRODUCT speziell so programmiert ist, dass die Fehler, die sich aus der Multiplikation von Textwerten ergeben, ignoriert werden, sieht das endgültige Array folgendermaßen aus:

(1,0,0,0,1,0,1)

Die einzigen Werte, die die Multiplikation "überleben", sind diejenigen, die 1s innerhalb von Array1 entsprechen . Sie können sich vorstellen, dass die Logik in Array1 die Werte in Array2 " filtert " .

Interessante Beiträge...