Seit Ende 2020 gibt es nun schon die LAMBDA-Funktion in Excel und sie ist eine mächtige Funktion, die eigene Funktionen ohne Programmierung erlaubt. Also ohne VBA, Script Lab und ohne Rekorder für Makroaufzeichnungen. Allerdings ist diese Funktion dennoch nicht die "eierlegende Wollmilchsau", denn sie hat natürlich auch Einschränkungen und die Benutzung ist etwas anders, als in Excel gewohnt.
Die Funktion kann zwar, wie alle Funktionen in Excel, auch direkt in einer Zelle eingegeben, jedoch danach nicht benutzt werden.
Beginnen wir aber dennoch zunächst in einer Zelle, um das Prinzip der Funktion zu erklären:
Der Tooltip zu dieser Funktion lautet: "Erstellt einen Funktionswert, der in Formeln aufgerufen werden kann".
Funktionen sind all diese netten Befehle, die wir in die Zelle eingeben können, um etwas zu berechnen. Beispielsweise SUMME(...) oder WENN(...) oder ANZAHL(...), RUNDEN(...), MITTELWERT(...) und all die anderen über 500 Funktionen, die es in Excel gibt. Und der Funktionswert ist das, was am Ende bei den Funktionen herauskommt. Also ist LAMBDA eine Funktion, die eine Funktion erstellt? Exakt so ist es ;)
Die Syntax (also der Teil in der Klammer) ist leider in Englisch und zunächst nicht sehr aussagend: Parameter_or_calculation; ...
Demnach ist alles ein Muss(!) und davon so viel wie ich mag (maximal 253). Das erscheint zunächst eine sehr merkwürdige Syntax zu sein. Aber entscheidend ist das or also entweder Parameter oder Berechnung (calculation) - aber alles muss(!) angegeben werden. Für den Programmier-Laien ist das mit dem Parameter meist bereits unklar. Als Parameter wird in diesem Zusammenhang alles, was ich an die Funktion an Werten übergeben kann, bezeichnet. Das kann eine Zahl, ein Text oder ein Wahrheitswert sein (Richtig oder Falsch).
Angenommen ich möchte zwei Zahlen addieren (x+y), dann müssen diese beiden Zahlen zunächst übergeben werden, denn sonst ist nichts da zum Addieren. Und genau diese beiden Zahlen sind unsere Parameter. Damit haben wir im Grunde genommen die LAMBDA-Funktion in diesem einfachen Beispiel bereits fertig:
=LAMBDA(x; y; x+y)
Die erste Zahl wird in der Variablen x gespeichert, die zweite Zahl in der Variablen y und danach werden diese beiden Zahlen addiert (x+y).
Eigentlich ganz einfach. Allerdings: wenn Sie das in einer Zelle eingeben, erhalten Sie zunächst die Excelfehlermeldung #CALC! und wenn Sie anschließend dieser Zelle einen Namen vergeben und eben diesen aufrufen und zwei Zahlen übergeben, bekommen Sie die Fehlermeldung: #BEZUG!
#CALC! bedeutet, dass Excel was zum Kalkulieren, in unserem Beispiel zum Berechnen der Addition, benötigt, aber an dieser Stelle natürlich nichts hat. Und das #BEZUG! bezieht sich darauf, dass ich zwar die beiden Werte (Parameter) für die Kalkulation versuche zu übergeben, aber Excel hier einfach der Bezug zu all dem fehlt. Die LAMBDA-Funktion funktioniert so einfach nicht (im Beispiel-Screenshot habe ich mein LAMBDA-Feld "Berechnung" genannt). Die Funktion selber ist aber korrekt - wir haben sie lediglich an die falsche Stelle geschrieben!
Kopieren Sie Ihre LAMBDA-Funktion oder besser noch: schneiden Sie sie aus (beispielsweise mit dem Tastenkürzel Strg + X). Gehen Sie dann im Menü zur Registerkarte Formeln/Definierte Namen/Namens-Manager. Sind Sie meinem Beispiel gefolgt, haben Sie dort bereits den Namen "Berechnung" stehen. Falls nichts drin steht, ist das aber auch kein Problem. Entweder den Namen markieren und auf den Button "Bearbeiten..." klicken oder auf "Neu..."
In Name geben Sie einen Namen Ihrer Wahl ein. Der darf aber keine Leerzeichen enthalten und darf weder mit einem Sonderzeichen, außer dem Unterstrich, oder einer Zahl beginnen. Wenn Sie mehrere Wörter in Ihrem Namen haben, dann können Sie die mit einem Unterstrich verbinden oder einfach mit einem Großbuchstaben (mein persönlicher Favorit): "Meine_Berechnung" oder "MeineBerechnung" beispielsweise.
Ich empfehle immer einen Kommentar zu schreiben. In diesem einfachen Beispiel ist das nun nicht unbedingt notwendig, aber wenn Sie komplexere Berechnungen hier eingeben, macht es immer Sinn ein paar Stichworte anzugeben, warum und was Sie da gemacht haben. Spätestens in drei Monaten ist das eventuell nicht mehr ganz so durchschaubar. Und zusätzlich wird dieser Kommentar auch angezeigt als Tooltip, wenn Sie die Funktion in Excel aufrufen. Damit haben Sie auch die Möglichkeit für andere diese Funktion zugänglicher zu machen.
In "Bezieht sich auf:" steht eventuell bereits etwas drin. Beispielsweise "=Tabelle1!$A$1". Das müssen wir komplett löschen und stattdessen dort unsere LAMBDA-Funktion hineinkopieren, bzw. schreiben. Danach auf "OK" und "Schließen".
In C1 habe ich die LAMBDA-Funktion mit dem Namen Berechnung aufgerufen und zwei Zahlen übergeben: =Berechnung(1;2)
Statt zwei Zahlen direkt zu übergeben, können Sie auch Zellen übergeben: =Berechnung(A1;A2)
. Oder auch dieses hier funktioniert problemlos: =Berechnung(SUMME(F1:F3);SUMME(G1:G3))
. Die jeweiligen SUMMEN-Funktionen berechnen jeweils eine Zahl. Und ich muss ja eine Zahl jeweils übergeben. Aber natürlich geht noch mehr mit LAMBDA. Hier ein paar Beispiele:
=LAMBDA(Ergebnis;Steuersatz;Ergebnis*Steuersatz)
Wenn Sie hin und wieder an verschiedenen Stellen den Steuersatz berechnen wollen und auch unterschiedliche Steuersätze haben, dann wäre das hier eine Möglichkeit. Ich habe diese LAMBDA-Funktion "MwSt" genannt und rufe sie hiermit auf: =MwSt(B9;19%)
LAMBDA mit einer WENN-Funktion gekoppelt gibt ebenfalls eine Menge Möglichkeiten. Hier prüfe ich lediglich ab, ob mein Monatsergebnis im Plus oder Minus liegt und mir wird ein einfacher Text entsprechend ausgegeben:
=LAMBDA(Testergebnis;WENN(Testergebnis>=0;"Gewinn!";"Minus"))
Der Aufruf erfolgt diesmal nur mit einem Wert, denn ich möchte ja lediglich abprüfen, ob ich im Plus oder Minus liege: =Auswertung(B9)
Sie können aber auch mit grafischen Elementen eine Auswahl treffen. Wenn Sie auf einem Windowsrechner die WIN-Taste gedrückt halten und dann den Punkt antippern, erscheinen ein paar Emojis, Kaomojis und andere kleine grafische Gimmicks. Wenn Sie nun in der LAMBDA-Funktion das Wort "Gewinn" markieren und WIN+. klicken, können Sie ein Emoji auswählen. Achten Sie darauf, dass die Smileys in Anführungszeichen stehen. Die GIFs funktionieren nicht, aber die anderen Elemente durchaus. Allerdings wird alles in schwarz/weiß angezeigt.
Es ist auch möglich, die LAMBDA-Funktion in sich aufzurufen. Auf diese Art und Weise kann eine Schleife erzeugt werden. Es muss dafür aber eine Abbruchbedingung innert einer WENN-Funktion entwickelt werden. Eine beliebte Übung von mir an meine Teilnehmer ist das Entfernen von Leerzeichen oder auch anderen Zeichen aus einer Telefonnummer und auch das Ersetzen von Zeichen zwischen der Vorwahl und der eigentlichen Telefonnummer. Ich habe dieses Beispiel etwas abgewandelt und ein wirklich sehr schönes Beispiel dazu bei Excelhero gefunden, das ich mir erlaube, mitzuübernehmen.
Die Funktion ist etwas länger, als bei den anderen Beispielen und sieht auf den ersten Block etwas verwirrend aus. Aber wir werden die Funktion Stück für Stück zerlegen ;)
=LAMBDA(Text;Zeichen;WENN(Zeichen="";Text;ZeichenEntfernen(WECHSELN(Text;LINKS(Zeichen);"");RECHTS(Zeichen;LÄNGE(Zeichen)-1))))
Ich übergebe zwei Parameter: Text und Zeichen. Text ist der Ausgangstext - meine Telefonnummern und in Zeichen stehen die oder das zu entfernende Zeichen. Die Berechnung beginnt mit einer WENN-Funktion und fragt ab, ob in Zeichen noch was steht oder es leer ist (Zeichen=""
). Wenn leer dann wird einfach der Text ausgegeben. Wenn noch ein Zeichen zum entfernen da ist, wird die Schleife durchlaufen, was im hinteren Teil der WENN-Funktion passiert:
ZeichenEntfernen(WECHSELN(Text;LINKS(Zeichen);"");RECHTS(Zeichen;LÄNGE(Zeichen)-1))
Mit WECHSELN tausche ich alle Suchzeichen gegen eine leere Zeichenkette aus. LINKS(Zeichen) bezieht such auf das erste Zeichen meiner gesuchten zu entfernten Zeichen, die in Zelle A8 stehen:
Es sollen alle Zeichen entfernt werden, die in A8 stehen: #-@ ?". LINKS(A8)
wählt das erste Zeichen aus, sofern keine Zeichenlänge explizit angegeben wird.
Die LAMBDA-Funktion Namens ZeichenEntfernen benötigt zwei Parameter, die ich natürlich auch übergeben muss, wenn ich die Funktion in sich wieder aufrufe. Somit wird im ersten Teil der Text ermittelt, der bei jedem Aufruf mit dem linken ersten Zeichen aus A8 entfernt wird und im zweiten Teil muss ich nun den Inhalt von A8 quasi verkleinern. Wenn das erste Zeichen gesucht, gefunden und entfernt wurde, muss nun das nächste Zeichen gesucht werden. Das wird mit einer Verkürzung der Länge erreicht.
RECHTS(Zeichen;LÄNGE(Zeichen)-1
-1 verkürzt die Länge bei jedem Durchgang um 1 und schiebt sozusagen das linke Zeichen nach außen. Beim ersten Durchgang wird nach der Raute ("#") gesucht. Beim zweiten Durchgang nach dem Minuszeichen ("-"), beim dritten Durchgang nach dem AT-Zeichen ("@") und so weiter. Nicht dass Sie sich wundern: Wenn Sie das AT-Zeichen eingeben, legt Excel einen Link an. Das aber nur am Rande.
Sieht etwas wild aus, ist aber sehr logisch und zeigt sehr beeindruckend, was mit der LAMBDA-Funktion möglich ist. Ach ja: wenn Sie obiges Beispiel aufrufen und die Funktion nach unten ziehen, denken Sie daran A8 mit einem absoluten Zellbezug zu belegen ;)
=ZeichenEntfernen(A2;$A$8)
Was aber auch geht: =ZeichenEntfernen(A2;"#-")
LAMBDA bietet also so einiges an Möglichkeiten. Es ist aber stets wichtig, dass Sie eine Berechnung, also einen Rückgabewert haben (calculation) und dieser muss immer am Ende stehen. Also vorn die Parameter und als letztes die Berechnung!
Nachfolgend eine "sinnlose Funktion" weil man natürlich hier LAMBDA wirklich auch weglassen kann. Aber dennoch ein kleines Beispiel, dass es reicht, einfach nur eine calculation auszuführen:
=LAMBDA(HEUTE())