=LAMBDA(price;price*1,2)(B2) legt eine kleine Funktion mit einer Eingabe, price, fest und ruft sie sofort für B2 auf: Aus den 2.5 des Stifts werden 3. Für sich allein ist das nur eine längere Form von =B2*1,2. Der Sinn von LAMBDA ist, der Funktion im Namens-Manager einen Namen zu geben, damit aus einer langen Formel =ADDVAT(B2) wird, und sie an MAP, NACHZEILE und die anderen Funktionen weiter unten zu übergeben. LAMBDA heißt in deutschem Excel genauso; die Tabelle zeigt die Formel in englischer Schreibweise, =LAMBDA(price,price*1.2)(B2). Du kannst die Formeln in der Tabelle auch deutsch eingeben, mit Semikolons.
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | With VAT |
| 2 | Pen | 2.5 | 3 |
| 3 | Bag | 120 | 144 |
| 4 | Lamp | 35 | 42 |
| 5 | Mug | 8 | 9.6 |
| 6 | Desk | 150 | 180 |
=LAMBDA(price;price*1,2)(B2)Syntax von LAMBDA
=LAMBDA([parameter1, parameter2, ...], calculation)
- Jeder
parameterist ein Name für eine Eingabe, wie die Namen in LET. Bis zu 253 sind erlaubt. - Das letzte Argument ist die
calculation, die die Parameter verwendet. - Die Werte für die Parameter stehen in Klammern direkt nach der schließenden Klammer:
=LAMBDA(x;y;x*y)(3;4)liefert 12.
LAMBDA, MAP, NACHZEILE, NACHSPALTE, SCAN, REDUCE und MATRIXERSTELLEN brauchen Microsoft 365, Excel 2024 oder Excel für das Web. Excel 2021 hat LET, aber diese Funktionen nicht. Google Sheets hat LAMBDA ebenfalls und speichert es unter einem Namen mit Daten > Benannte Funktionen.
Ein LAMBDA als eigene Funktion speichern
Wiederverwendbar wird ein LAMBDA, wenn du ihm einen Namen gibst. Excel braucht dafür weder VBA noch ein Add-in:
- Wähle Formeln > Namens-Manager und klick auf Neu (oder Formeln > Namen definieren).
- Tippe bei Name den Namen der Funktion, zum Beispiel
ADDVAT. - Gib bei Bezieht sich auf das LAMBDA ohne Eingaben ein:
=LAMBDA(price;price*1,2). - Klick auf OK. Jetzt tippst du
=ADDVAT(B2)in eine beliebige Zelle der Arbeitsmappe.
Name: ADDVAT
Refers to: =LAMBDA(price,price*1.2)
In a cell: =ADDVAT(B2) returns 3 when B2 is 2.5
Die Funktion gibt es nur in dieser Arbeitsmappe. Kopierst du ein Blatt, das sie verwendet, in eine andere Arbeitsmappe, kommt der Name mit. Änderst du das LAMBDA einmal im Namens-Manager, aktualisiert sich jede Zelle, die es aufruft. Teste ein LAMBDA in einer Zelle mit Eingaben in Klammern, bevor du es speicherst; dort ist ein Fehler leichter zu sehen.
MAP: ein LAMBDA auf jede Zelle anwenden
MAP ruft das LAMBDA einmal für jede Zelle eines Bereichs auf und liefert einen Bereich derselben Form. Hier bekommt jeder Preis über 100 einen Rabatt von 10 %:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Price to pay |
| 2 | Pen | 2.5 | 2.5 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 35 |
| 5 | Mug | 8 | 8 |
| 6 | Desk | 150 | 135 |
Aus der Tasche (120) werden 108 und aus dem Schreibtisch (150) werden 135; die anderen Preise bleiben, wie sie sind. Eine Formel in C2 deckt die ganze Spalte ab. MAP kann auch zwei gleich große Bereiche nebeneinander durchgehen: Mit Mengen in D2:D6 multipliziert =MAP(B2:B6,D2:D6,LAMBDA(p,q,p*q)) (englische Schreibweise) jeden Preis mit seiner Menge.
NACHZEILE: ein Ergebnis pro Zeile
NACHZEILE (englisch BYROW) gibt dem LAMBDA jeweils eine ganze Zeile, also kann das LAMBDA darauf MAX, SUMME oder MITTELWERT anwenden. Die beste und die durchschnittliche Punktzahl jedes Schülers:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Best | Average |
| 2 | Ann | 72 | 85 | 90 | 90 | 82.3 |
| 3 | Ben | 64 | 70 | 58 | 70 | 64 |
| 4 | Cara | 88 | 92 | 95 | 95 | 91.7 |
| 5 | Dan | 75 | 60 | 81 | 81 | 72 |
=NACHZEILE(B2:D5;LAMBDA(r;MAX(r)))E2 liefert 90, 70, 95 und 81; F2 liefert 82.3, 64, 91.7 und 72. Ein einfaches =MAX(B2:D5) würde eine Zahl für die ganze Tabelle liefern; NACHZEILE hält die Zeilen in einer einzigen Formel auseinander. In deutschem Excel lautet die Formel in E2 =NACHZEILE(B2:D5;LAMBDA(r;MAX(r))). NACHSPALTE (englisch BYCOL) macht dasselbe pro Spalte: =NACHSPALTE(B2:D5;LAMBDA(c;MITTELWERT(c))) liefert den Mittelwert jedes Tests.
SCAN und REDUCE: laufende Summen
REDUCE geht einen Bereich durch, trägt einen Wert mit und liefert nur das Endergebnis. SCAN macht dasselbe, liefert aber jeden Schritt, also wird es zu einer laufenden Summe in einer Formel:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Price | Running total | Total |
| 2 | Pen | 2.5 | 2.5 | 315.5 |
| 3 | Bag | 120 | 122.5 | |
| 4 | Lamp | 35 | 157.5 | |
| 5 | Mug | 8 | 165.5 | |
| 6 | Desk | 150 | 315.5 |
=SCAN(0;B2:B6;LAMBDA(total;x;total+x))Das erste Argument, 0, ist der Startwert. Für jeden Preis bekommt das LAMBDA die bisherige Summe und den Preis und liefert die neue Summe. C2 läuft über 2.5, 122.5, 157.5, 165.5, 315.5, und D2 zeigt nur die abschließenden 315.5. In deutschem Excel lautet die Formel in C2 =SCAN(0;B2:B6;LAMBDA(total;x;total+x)). Für eine einfache Summe ist SUMME einfacher, aber REDUCE kann alles mittragen, etwa einen Text, der wächst, oder eine Zahl, die nur in manchen Zeilen steigt.
Ein LAMBDA innerhalb einer Formel mit LET benennen
Ein LAMBDA braucht keinen Namens-Manager, wenn nur eine Formel es verwendet. Benenne es mit LET und gib den Namen an MAP oder NACHZEILE weiter:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Sale price |
| 2 | Pen | 2.5 | 2.25 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 31.5 |
| 5 | Mug | 8 | 7.2 |
| 6 | Desk | 150 | 135 |
Jeder Preis bekommt 10 % Rabatt: 2.25, 108, 31.5, 7.2 und 135. In Excel kannst du das benannte LAMBDA auch direkt in LET aufrufen, =LET(f;LAMBDA(x;x*2);f(5)), das 10 liefert.
Übung: eine Summe pro Zeile mit NACHZEILE
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Total |
| 2 | Ann | 72 | 85 | 90 | |
| 3 | Ben | 64 | 70 | 58 | |
| 4 | Cara | 88 | 92 | 95 | |
| 5 | Dan | 75 | 60 | 81 |
Du bist dran: Gib in E2 mit einer einzigen Formel die Summe der drei Tests jedes Schülers zurück, eine Zahl pro Zeile.
Häufige Fehler mit LAMBDA
=LAMBDA(x,x*2) #CALC! defined but never called
=LAMBDA(x,x*2)(5) 10
=LAMBDA(x,y,x*y)(3) #VALUE! two parameters, one value
=LAMBDA(x,x*2)(3,4) #VALUE! one parameter, two values
Der Block oben und die Tabellen zeigen die englischen Fehlernamen.
- #KALK! (englisch #CALC!) bedeutet, dass ein LAMBDA in einer Zelle steht, ohne aufgerufen zu werden. Setz die Eingaben in Klammern dahinter, oder speicher es im Namens-Manager und ruf es über den Namen auf.
- #WERT! (englisch #VALUE!) bedeutet, dass die Zahl der Werte nicht zur Zahl der Parameter passt. Zähl auf beiden Seiten nach.
- #NAME? bedeutet, dass die Excel-Version kein LAMBDA hat oder ein gespeicherter Name falsch geschrieben ist. Für Parameternamen gelten die Regeln von LET: keine Leerzeichen, kein Name, der wie eine Zelladresse aussieht.
- Ein LAMBDA in NACHZEILE, das pro Zeile mehrere Werte liefert, ergibt #KALK!. Jede Zeile muss einen Wert liefern; um eine Zeile mit Ergebnissen zurückzugeben, nimmst du stattdessen MATRIXERSTELLEN oder eine einfache Matrixformel.
Häufig gestellte Fragen
Was ist die Funktion LAMBDA in Excel?
Sie macht aus einer Formel eine Funktion mit benannten Eingaben. =LAMBDA(price;price*1,2) nimmt eine Eingabe namens price und liefert price mal 1,2. Du rufst sie auf, indem du die Eingabe in Klammern dahinter setzt, =LAMBDA(price;price*1,2)(B2), oder speicherst sie im Namens-Manager unter einem Namen.
Wie erstelle ich in Excel eine eigene Funktion ohne VBA?
Öffne Formeln > Namens-Manager > Neu, tippe einen Namen wie ADDVAT und gib bei Bezieht sich auf =LAMBDA(price;price*1,2) ein. Klick auf OK, und =ADDVAT(B2) funktioniert in jeder Zelle dieser Arbeitsmappe.
Warum liefert mein LAMBDA #KALK!?
Ein LAMBDA, das ohne Eingaben in eine Zelle getippt wird, etwa =LAMBDA(x;x*2), ist eine Funktion, die nie aufgerufen wurde, also zeigt Excel #KALK!. Setz die Eingabe in Klammern dahinter, =LAMBDA(x;x*2)(5), oder speicher es im Namens-Manager.
Welche Excel-Versionen haben LAMBDA?
Microsoft 365, Excel 2024 und Excel für das Web, zusammen mit MAP, NACHZEILE, NACHSPALTE, SCAN, REDUCE und MATRIXERSTELLEN. Excel 2021 hat LET, aber kein LAMBDA.
Was macht NACHZEILE in Excel?
Es führt ein LAMBDA einmal pro Zeile eines Bereichs aus und liefert ein Ergebnis pro Zeile: =NACHZEILE(B2:D5;LAMBDA(r;MAX(r))) liefert den größten Wert jeder Zeile, nach unten übergelaufen.