🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel MAP, REDUCE & BYROW — Über Arrays iterieren mit LAMBDA-Helfern

|

Excel MAP, REDUCE & BYROW — Über Arrays iterieren mit LAMBDA-Helfern

Kurz gesagtMAP, REDUCE, SCAN, BYROW und BYCOL sind Funktionen höherer Ordnung: Sie nehmen ein LAMBDA und lassen es über ein Array laufen — For Each ohne Makro. Die Falle Nummer 1: das LAMBDA von BYROW/BYCOL muss einen Wert pro Zeile/Spalte zurückgeben, sonst bekommen Sie #CALC!. Wählen Sie den Helfer nach der Form der gewünschten Antwort. Excel 365 und 2024+.

=MAP(A2:A100, LAMBDA(v, IF(v<0, 0, v)))          ' jede Zelle transformieren
=BYROW(data, LAMBDA(row, SUM(row)))              ' eine Summe pro Zeile
=REDUCE(0, A2:A100, LAMBDA(acc, v, acc + v))     ' auf einen einzigen Wert zusammenfassen

LET gab Ihnen Variablen. LAMBDA gab Ihnen Funktionen. Die Helfer geben Ihnen das letzte Stück einer Programmiersprache: Schleifen. Jeder nimmt ein LAMBDA und lässt es über ein Array laufen, sodass Sie nie For Each schreiben — Sie beschreiben, was mit jedem Element zu tun ist, und Excel iteriert.

Das lernen Sie

  • Das mentale Modell: die Schleifen — ein LAMBDA an ein Array verfüttern
  • Welcher Helfer was tut: MAP (transformieren), REDUCE (zusammenfassen), SCAN (laufende Summen), BYROW/BYCOL (ein Wert pro Zeile/Spalte)
  • Die Regel Nummer 1: BYROW muss einen einzelnen Wert zurückgeben — die #CALC!-Lösung für „eine Summe pro Zeile"
  • Das REDUCE-Akkumulator-Muster — und wann ein schlichtes SUMIFS immer noch gewinnt

Das mentale Modell: das sind die Schleifen

Es gibt fünf Helfer, und sie teilen sich sauber danach auf, welche Form herauskommt:

  • MAPjedes Element transformieren → ein Array derselben Form (10 Zellen rein, 10 Zellen raus).
  • REDUCE — ein ganzes Array auf einen Wert zusammenfassen (ein laufender Akkumulator: Summe, Verkettung, Maximum).
  • SCAN — wie REDUCE, aber behält jeden Zwischenschritt → eine laufende Summe, die die Spalte hinunter spillt.
  • BYROW / BYCOL — das LAMBDA auf jede ganze Zeile (oder Spalte) anwenden → ein Wert pro Zeile (oder Spalte).

Sobald Sie sie nach Ausgabeform sortieren — gleiche Form, ein Wert, jeder Schritt, einer pro Zeile — hört die Wahl des richtigen Helfers auf, Raterei zu sein.

Kopier-und-einfüg-Muster

MAP — eine Transformation auf jedes Element anwenden:

=MAP(A2:A100, LAMBDA(v, IF(v<0, 0, v)))

REDUCE — ein Array auf einen einzigen Wert eindampfen (der Akkumulator acc trägt das Ergebnis weiter):

=REDUCE(0, A2:A100, LAMBDA(acc, v, acc + v))

SCAN — dieselbe Idee, aber jeden Schritt ausspillen (eine laufende Summe):

=SCAN(0, A2:A100, LAMBDA(acc, v, acc + v))

BYROW — ein Wert pro Zeile (hier das Maximum jeder Zeile):

=BYROW(A2:D100, LAMBDA(row, MAX(row)))

Die Regel, an der BYROW scheitert: einen Wert pro Zeile zurückgeben

Das ist der Helfer, den die Leute falsch machen, und das Symptom ist #CALC!. Das LAMBDA, das Sie BYROW (oder BYCOL) geben, muss für jede Zeile einen einzelnen Wert zurückgeben — eine Zahl, eine Textzeichenkette, eine Zelle. Gibt es ein Array zurück, kann BYROW es nicht unterbringen und wirft #CALC!.

=BYROW(data, LAMBDA(row, SUM(row)))      ' eine Zahl pro Zeile -> funktioniert
=BYROW(data, LAMBDA(row, row*2))         ' #CALC!  — row*2 ist ein Array, kein einzelner Wert

Dieser zweite Fall ist in Wahrheit eine MAP-Aufgabe (jedes Element transformieren), keine BYROW-Aufgabe. Der Fehler geht auch in die andere Richtung: Leute greifen zu MAP, um „eine Summe pro Zeile" zu bekommen, und kriegen es nicht zum Laufen — weil MAP elementweise arbeitet und nie eine Zeile aggregiert. Wollen Sie einen Wert pro Zeile, ist das BYROW. Wollen Sie jede Zelle transformieren, ist das MAP. Die Ausgabeform entscheidet.

Der REDUCE-Akkumulator: das eine Muster, das Sie verinnerlichen müssen

REDUCE ist das mächtigste und das am wenigsten intuitive — wegen acc, dem Akkumulator, der das laufende Ergebnis von einem Element zum nächsten trägt. Lesen Sie LAMBDA(acc, v, …) als „hier ist das bisherige Ergebnis (acc) und der nächste Wert (v); gib das neue bisherige Ergebnis zurück."

  • Summe: LAMBDA(acc, v, acc + v) beginnend bei 0
  • Verketten: LAMBDA(acc, v, acc & ", " & v) beginnend bei ""
  • Bedingtes Zählen: LAMBDA(acc, v, acc + (v>100)) beginnend bei 0

Sobald acc Klick macht, erledigt REDUCE die „geh die Liste durch und bau etwas auf"-Aufgaben, die Sie früher in VBA gezwungen haben — laufende Salden mit Regeln, eigene Aggregationen, Parsing-Schleifen.

Die Ermessensfrage: wann ein schlichtes Aggregat immer noch gewinnt

Diese Helfer iterieren in der Berechnungs-Engine und können auf sehr großen Arrays langsam sein. Für eine schlichte Summe sind SUM/SUMPRODUCT/SUMIFS schneller und einfacher — greifen Sie zu den Helfern, wenn die Logik pro Element wirklich eigen ist, nicht wenn ein eingebautes Aggregat die Aufgabe schon erledigt.

Sie wollen… Helfer Ausgabeform
Jedes Element transformieren MAP Gleiche Form wie die Eingabe
Einen Wert pro Zeile BYROW Eine Spalte mit Ergebnissen
Einen Wert pro Spalte BYCOL Eine Zeile mit Ergebnissen
Auf einen einzigen Wert zusammenfassen REDUCE Eine Zelle
Eine laufende Summe die Zeilen hinunter SCAN Gleiche Form, kumulativ

Wenn Sie eine Formel für laufende Summen über 10.000 Zeilen ziehen, ist das ein SCAN; wenn Sie eine Hilfsspalte hinzufügen, nur um einen Wert pro Zeile zu berechnen, ist das ein BYROW. Aber wenn ein SUMIFS die Frage schon beantwortet, nehmen Sie es — die Helfer sind für eigene Logik da, nicht dafür, Aggregate neu zu erfinden.

Wie ExcelMaster hilft

Funktionen höherer Ordnung sind der steilste Teil des modernen Excel — acc, Ausgabeformen, MAP-vs-BYROW — und genau da, wo ein KI-Copilot am meisten Zeit spart. ExcelMaster verwandelt „gib mir das Maximum jeder Zeile" oder „einen laufenden Saldo, der sich jeden Monat zurücksetzt" in die richtige MAP/REDUCE/BYROW-Formel, wählt den passenden Helfer für die gewünschte Ausgabeform und erklärt den Akkumulator Schritt für Schritt. Wenn ein Helfer #CALC! wirft, sagt es Ihnen, ob Sie BYROW statt MAP gebraucht hätten — und schreibt es um. Probieren Sie es mit Ihren eigenen Daten.

Häufig gestellte Fragen

Was sind die LAMBDA-Helfer-Funktionen in Excel?

MAP, REDUCE, SCAN, BYROW und BYCOL sind Funktionen höherer Ordnung: Jede nimmt ein LAMBDA und lässt es über ein Array laufen. Damit können Sie in einer Formel über Daten iterieren — transformieren, aggregieren oder akkumulieren — ohne ein VBA-Makro zu schreiben.

Warum gibt BYROW #CALC! zurück?

Das LAMBDA, das Sie übergeben haben, gibt ein Array statt eines einzelnen Werts zurück. BYROW braucht einen Wert pro Zeile — aggregieren Sie die Zeile mit SUM(row), MAX(row) usw. Wenn Sie eigentlich jedes Element transformieren wollen, nehmen Sie MAP, nicht BYROW.

Was ist der Unterschied zwischen MAP und BYROW?

MAP arbeitet Element für Element und gibt ein Array derselben Form wie die Eingabe zurück. BYROW arbeitet auf ganzen Zeilen und gibt einen Wert pro Zeile zurück. Nehmen Sie MAP, um jede Zelle zu transformieren; nehmen Sie BYROW, um eine Summe, ein Maximum oder eine Anzahl pro Zeile zu bekommen.

Wie funktioniert REDUCE in Excel?

REDUCE(start, array, LAMBDA(acc, v, …)) läuft durch das Array und trägt dabei einen Akkumulator acc mit. Für jeden Wert v berechnet es ein neues acc. =REDUCE(0, A2:A100, LAMBDA(acc, v, acc+v)) summiert den Bereich; beginnen Sie bei "" mit acc & v, verkettet es ihn.

Welche Excel-Versionen haben MAP, REDUCE und BYROW?

Die LAMBDA-Helfer sind in Excel 2024 und Microsoft 365 für Windows und Mac verfügbar. In Excel 2021, 2019 oder 2016 gibt es sie nicht.

Getestet in

Getestet in: Excel 365 (Windows 11) – zuletzt geprüft am 22.06.2026.

Verwandte Anleitungen: Excel LAMBDA · Excel LET · Excel SORT · Excel SEQUENCE