Excel LAMBDA Funktion

Überblick

Mit der Excel LAMBDA Funktion kannst Du eigene Funktionen bauen und diese dann in deiner Arbeitsmappe aufrufen. Dies war bisher nur mit VBA über sogenannte UDF (user defined functions) möglich. Der Vorteil ist, dass sich hiermit lange Formeln abkürzen lassen und diese an einer zentralen Stelle im Namensmanager bearbeitet werden können. Zudem können diese Funktion durch eine eindeutige Bezeichnung der Parameter lesbarer sein als normale Formeln. In Kombination mit anderen neuen Funktionen lassen sich diese LAMBDA-Funktionen in unterschiedliche Art auf Zellbereiche anwenden. 

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

Verwendungszweck / Rückgabewert

Erstellt eine Funktion, die in Formeln aufgerufen werden kann

Syntax

=LAMBDA(parameter_or_calculation; …)
=LAMBDA(parameter1; parameter2; …; calculation)

Argumente

parameter - hier werden zuerst die Parameter gelistet z.B. a; b; etc.
calculation - Definiert was mit den Parametern geschehen soll, also wie die Berechnung aussieht, z.B. a+b. Hier können auch andere Excel-Funktionen verarbeitet werden. Die gesamte Funktion würde dann z.B. so aussehen =LAMBDA(a;b;a+b)

AUFRUF von LAMBDA

Es gibt zwei Wege die LAMBDA-Funktion aufzurufen.
1) =LAMBDA(...)(parameter1; parameter2; ...) Zum Testen der LAMBDA-Funktion macht es Sinn diese zuerst eine Zelle zu schreiben und dann am Ende in Klammern Werte für die Parameter anzugeben.
Bsp. =LAMBDA(Netto; MwSt; Netto*(1+MwSt))(100;0,19) = 119

2) Abspeichern der LAMBDA-Funktion im Namensmanager und dann Aufruf über den definierten Namen. 

Dazu den Namensmanager unter Formeln-> Name Manager*in öffnen und dann auf Neu... 
Alternativ über den Shortcut STRG+F3

Unter Name wird der Name der LAMBDA-Funktion eingetragen. Über diesen Namen lässt sich die Funktion aufrufen.

Der Kommentar erscheint bei der Schnellauswahl und dient als Erklärung der Funktion.

Bei Bezieht sich auf wird die LAMBDA-Funktion eingetragen.

Bei der Eingabe einer Formel erscheint diese neue Funktion dann auch in der Schnellauswahl. Der Kommentar ist sichtbar, bevor man die erste öffnende Klammer setzt und dient als Funktionsbeschreibung. Sobald man die erste Klammer setzt, sieht man die Parameter. Daher ist es wichtig hier eindeutige Parameterbezeichnungen zu wählen.

Logik - LAMBDA

Rekursive LAMBDA-Funktionen

Eine LAMBDA-Funktion kann innerhalb derselben Funktion über den im Namensmanager definierten Namen erneut aufgerufen werden. Das ermöglicht uns Schleifen innerhalb der LAMBDA-Funktion zu verwenden. Man kann eine Action x-mal ausführen, was der For-To-Next-Zählschleife entspricht. Auch können wir Abbruchbedingungen definieren, was While-Schleifen und Do...Until-Schleifen entspricht.

Im folgenden Beispiel handelt es sich um eine Do...Until-Schleife. 

Lambda-Funktion mit dem Namen MyLambda

=LAMBDA(x; y;                                        'Parameter
      WENN(logischer_test;                      'Prüfung einer Bedingung
                  Wert_wenn_WAHR;               'Ausstieg wenn WAHR. Kein weiterer Aufruf von MyLambda
                  MyLambda()))                       'Rekursion wenn FALSCH. Weiterer Aufruf von MyLambda 

Lambda-Funktion mit dem Namen ZeichenEntfernen

=LAMBDA(text; zeichen;                                 'Parameter
     WENN(zeichen="";                                      'Prüfung einer Bedingung
                 text;                                                  'Finaler Wert ist text. Kein weiterer Aufruf von ZeichenEntfernen
                 ZeichenEntfernen(                          'Rekursion. Aufruf von ZeichenEntfernen.
                 WECHSELN(text;LINKS(zeichen);"");         'text und zeichen werden hier verändert und erneut als...
                 RECHTS(zeichen;LÄNGE(zeichen)-1))))    'Parameter für den nächsten Aufruf verwendet.

Rekursive Lambda-Funktion sind auf den ersten Blick schwer zu verstehen, daher ist ratsam diese in die verschiedenen Bestandteile aufzuteilen. 

Eine Lambda-Funktion startet immer mit den Parametern. Einer repräsentiert den Wert/Inhalt, der bearbeitet werden soll. Dieser wird mehrfach angepasst und als Ergebnis ausgegeben. D.h. text ist hier sowohl Anfangs-, Zwischen- und Endwert.

=LAMBDA(textAnfang; zeichen;                          
     WENN(zeichen="";                                  
                 textEnde;                                              
                 ZeichenEntfernen(                      
                 WECHSELN(textZwischenschritt;LINKS(zeichen);"");    
                 RECHTS(zeichen;LÄNGE(zeichen)-1))))    

Der zweite Parameter repräsentiert die Zählschleife und kann z.B. eine Zahl sein die hoch oder runterzählt oder wie in diesem Beispiel eine Zeichenkette, die bei jedem Durchgang um ein Zeichen kürzer wird. Dieser Zählparameter hat auch einen Ausgangszustand, Endzustand und Zwischenwerte. Genauso wie der Wert/Inhalt ändert sich der Zähler auch mit jedem Durchgang. 

=LAMBDA(textAnfang; zeichenAnfang;                          
     WENN(zeichenEnde="";                                  
                 textEnde;                                              
                 ZeichenEntfernen(                      
                 WECHSELN(textZwischenschritt;LINKS(zeichenZwischenschritt);"");    
                 RECHTS(zeichenZwischenschritt;LÄNGE(zeichenZwischenschritt)-1))))    


Dann gibt es immer eine Bedingung, die zum Ende der Funktion führen muss. D.h. wenn Wert/Inhalt oder der Zähler der Schleife einen bestimmten Wert angenommen hat.

     WENN(zeichenEnde="";
                 textEnde;      

Wenn das Ende noch nicht erreicht ist, muss nun die Lambda-Funktion erneut aufgerufen werden.

                 ZeichenEntfernen(                      
                 WECHSELN(textZwischenschritt;LINKS(zeichenZwischenschritt);"");    
                 RECHTS(zeichenZwischenschritt;LÄNGE(zeichenZwischenschritt)-1))))    

Hier müssen nun die Parameter erneut, aber auch entsprechend verändert an den neusten Aufruf übergeben werden. In diesem Beispiel wird der Text um ein Zeichen bereinigt und dieses neue Ergebnis dient als Ausgangswert für den nächsten Aufruf. Der Parameter zeichen hat somit einen Einfluss auf den text. 

               WECHSELN(textZwischenschritt;LINKS(zeichenZwischenschritt);""); 

Auch die Zeichenkette wird um ein Zeichen reduziert und wird an den nächsten Aufruf übergeben.

               RECHTS(zeichenZwischenschritt;LÄNGE(zeichenZwischenschritt)-1))))    

Dies geschieht solange bis die Abbruchbedingung erreicht ist. Daher entspricht diese Konstruktion einer DO-Until Schleife. Im Folgenden ein Beispiel dafür wie aus einem Ausgangstext mit Hilfe einer Lambda-Funktion Sonderzeichen entfernt werden.

Logik - LAMBDA2 Rekursiv

Zu beachten

  • Die LAMBDA-Funktion biete uns in Kombination mit folgenden Funktionen viele neue Anwendungsmöglichkeiten. NACHZEILE, NACHSPALTE, SCAN, MAP, MATRIXERSTELLEN, REDUCE 
  • Ein Nachteil ist, dass man mit Hilfe der Formelauswertung nicht die einzelnen Berechnungsschritte in der LAMBDA-Funktion auswerten kann.