Excel REDUCE Funktion

Überblick

Mit der Excel REDUCE-Funktion wird auf alle Werte eines Arrays eine LAMDBA-Funktion angewendet und anschließend werden dann alle Ergebnisse aufsummiert. Das Ausgangsarray wird also zu einem einzelnen Wert reduziert. 

Die REDUCE Funktion steht aktuell nur in der Office 365 Insider Version zur Verfügung. 

Verwendungszweck / Rückgabewert

Reduziert ein Array auf einen akkumulierten Wert, indem für jeden Wert eine Lambdafunktion verwendet und der Gesamtwert im Akkumulator zurückgegeben wird

Syntax

=REDUCE([initial_value], array, lambda(accumulator, value))

Argumente

initital_value [optional] - Startwert. Wenn dieser nicht definiert ist, wird der erste Wert aus dem Array zum Startwert. D.h. in diesem Fall wird dieser erste Wert nicht durch die LAMBDA-Funktion verarbeitet.
array - Das Array mit Werten, die durch die LAMBDA-Funktion verarbeitet und aufsummiert werden
lambda - Die LAMBDA-Funktion hier hat eine spezielle Form und besteht einmal aus dem accumulator und dem value Parameter. Der accumulator repräsentiert das Zwischenergebnis aus dem vorhergehenden Berechnungsschritt oder anders gesagt den akkumulerenden Wert. Damit der accumulator arbeiten kann müssen die Werte aus dem Array value mit dem acculumator verrechnet werden.

AUFRUF von REDUCE

Es gibt zwei Wege die LAMBDA-Funktion in der REDUCE-Funktion aufzurufen.
1) =LAMBDA(...) Zum Testen der LAMBDA-Funktion macht es Sinn diese zuerst in die Formel zu schreiben.
Bsp. =REDUCE(;A5:A8;LAMBDA(a;v;a+v*2))

2) Abspeichern der LAMBDA-Funktion im Namensmanager und dann Aufruf über den definierten Namen.  
Bsp. =REDUCE(;A5:A8;VERDOPPELN)

In beiden Fällen müssen keine Parameter angegeben werden, da diese vorher in der REDUCE-Funktion übergeben werden.

Beispiele für REDUCE

Logik - REDUCE

Hier in dem Beispiel steht a für acculumator und v für value. Dem accumulator a wird der Wert v hinzugefügt und zusätzlich wird dieser noch verdoppelt a+v*2. Abhängig vom initial value bekommen wir unterschiedliche Ergebnisse zurückgespielt. Wenn initial value nicht definiert ist wird die 4, also der erste Wert im Array, zum Startwert a1. Die 4 wird hier also nicht verdoppelt. In der Beispieldatei sind die einzelnen Zwischenschritte zu sehen. a1 - a5 repräsentieren den anwachsenden accumulator und v1 - v4 sind die einzelnen Werte aus dem Array. Das Ergebnis aus der ersten Rechenschritt a1+v1*2 wird zum Ausgangswert a2 für den nächsten Rechenschritt, bis das Array vollständig abgearbeitet ist.  

Zu beachten

  • Wenn der Parameter initial_value nicht definiert ist, wird die LAMBDA-Funktion nicht auf den ersten Wert aus dem Array angewendet. Daher wird in der Regel der Startwert 0 gewählt.