Eine sehr spezielle Funktion: LAMBDA 9

Artikelbild-363
LAMBDA: Eine Funktion, um eigene Funktionen zu erstellen
 

Ich traue es mir fast nicht zu sagen, aber es gibt bestimmte Excel-Funktionen, um die ich immer einen großen Bogen mache. Weil ich sie nicht mag. Weil sich der Nutzen nicht (sofort) erschließt. Weil ich keinen Anwendungsfall dafür habe. Weil sie irgendwie komisch sind.

Und ganz weit vorne auf dieser Liste meiner ignorierten Funktionen steht die LAMBDA-Funktion.

Aber man lernt ja dazu. Und deshalb zeige ich dir heute ein paar Beispiele, wozu man diese Funktion brauchen kann. Und dass sie doch nicht so übel ist. Aber vielleicht weißt du das ja ohnehin schon und schüttelst den Kopf über meine bisherige Ignoranz.

Dann lass uns mal loslegen.

Beispieldatei herunterladen
Beispieldatei herunterladen

Eine kurze Einführung

Gleich eine wichtige Info zu Beginn: Die LAMBDA-Funktion gibt es nur in Microsoft 365 und Excel 2024. Benutzer anderer Excel-Versionen können hier eigentlich schon aufhören weiterzulesen.

Was genau macht also die LAMBDA-Funktion und wie wird sie eingesetzt?

Mit ihr kann man eigene, benutzerdefinierte Funktionen erstellen, denen man dann einen eigenen Namen zuweisen kann. Diese Funktionen lassen sich dann genauso verwenden, wie alle anderen Excel-Funktionen. LAMBDA ist also gewissermaßen eine Meta-Funktion.

Wenn du mit VBA programmierst, dann wirst du jetzt vermutlich fragen:
Und was soll daran so besonders sein? Das geht doch schon lange!

Stimmt. Mit VBA. Und mit den damit verbundenen Nachteilen.

Denn wer nicht programmieren kann, will oder darf, dem ist dieser Weg versperrt. Und selbst bei wem das möglich ist: Die Datei, in der eine solche benutzerdefinierte Funktion enthalten ist, muss zwingend im Makro-Format XLSM (oder XLSB) abgespeichert werden. Das ist nicht immer erwünscht. Außerdem gehen immer mehr Unternehmen dazu über, VBA aus Sicherheitsgründen komplett zu unterbinden.

Und da kommt die LAMBDA-Funktion ins Spiel. So sieht ihre Syntax aus:
=LAMBDA(Parameter1; [Parameter2; ...]; Berechnung)

Man übergibt also einen oder mehrere Werte an die Funktion und im letzten Argument wird dann eine Berechnung durchgeführt, welche dann als Ergebnis ausgegeben wird. Dabei wird die Funktion aber nicht direkt im Arbeitsblatt genutzt. Stattdessen muss man einen kleinen Umweg über den Namensmanager gehen. Dazu ein einfaches Beispiel.

Über das Menü „Formeln | Namen definieren“ wird der Namensmanager aufgerufen. Im Feld „Name“ vergebe ich einen beliebigen Namen für meine neue Funktion, in meinem Beispiel also ADDIEREN. Im Feld „Bezieht sich auf“ wird dann die LAMBDA-Funktion eingegeben:
=LAMBDA(x;y;x+y)

Eine benutzerdefinierte Funktion wird angelegt

Eine benutzerdefinierte Funktion wird angelegt

Damit habe ich eine Funktion angelegt, welche 2 Eingaben erwartet: x und y. In der Folge werden diese Eingaben addiert und das Ergebnis ausgegeben.

Den gerade definierten Namen „ADDIEREN“ kann ich jetzt wie eine normale Excel-Funktion nutzen:

Hinter dem Namen ADDIEREN verbirgt sich die LAMBDA-Funktion

Hinter dem Namen ADDIEREN verbirgt sich die LAMBDA-Funktion

Selbstverständlich könnte man anstelle der beiden Zahlen aus Zellbezüge angeben, in denen dann die Zahlen stehen.

Die LAMBDA-Funktion an sich bleibt für den Anwender im Hintergrund verborgen. Sie ist also nur dazu da, um eigene Funktionen zu erstellen.

Klar, für so ein einfaches Szenario wird kein Mensch eine LAMBDA-Funktion einsetzen. Aber du verstehst, in welche Richtung es geht.

Auch wenn du dich vielleicht nicht für die LAMBDA-Funktion begeistern kannst:
In Microsoft 365 gibt es eine ganze Reihe von neuen und seeeehr praktischen Funktionen: Die sogenannten dynamischen Array-Funktionen. Falls dir diese noch nicht so geläufig sind, dann wäre vielleicht mein neuer Online-Kurs etwas für dich! Hier findest du alle weiteren Infos dazu:
Online-Kurs „Dynamische Array-Funktionen“

Anwendungsbeispiel 1: Alle Formeln auflisten

Kürzlich habe ich in einem Artikel beschrieben, wie man sich eine übersichtliche Liste aller im Arbeitsblatt verwendeten Formeln erstellen kann. Hier kannst du diesen Artikel nachlesen: Alle Formeln auflisten

Dabei kam eine relative komplexe und verschachtelte Formel zum Einsatz, die man sich nur schwer merken kann:
=ZUSPALTE(ADRESSE(ZEILE(A1:E24);SPALTE(A1:E24);4)&": "&FORMELTEXT(A1:E24);2)

Eine komplexe Formel zum Auflisten alle Formeln

Eine komplexe Formel zum Auflisten alle Formeln

Und genau für diesen Fall möchte ich jetzt mit Hilfe der LAMBDA-Funktion eine etwas benutzerfreundliche und variablere Variante erstellen.

In der Original-Formel wird an mehreren Stellen auf den Zellbereich A1:E24 verwiesen. Wenn ich die Formel auf einen anderen Bereich anwenden möchte, muss ich diesen Bereich an 3 Stellen ändern. Nicht gerade sehr praktisch.

Daher lege ich jetzt im Namensmanager den neuen Namen „FORMELBEZUG“ an. In das Feld „Bezieht sich auf“ kommt dann die folgende LAMBDA-Formel“
=LAMBDA(Bezug;ZUSPALTE(ADRESSE(ZEILE(Bezug);SPALTE(Bezug);4)&": "&FORMELTEXT(Bezug);2))

Die komplexe Formel wird mit einem Namen versehen

Die komplexe Formel wird mit einem Namen versehen

Das erste Argument ist ein frei wählbarer Name, hier „Bezug“, weil ich ja einen Zellenbezug übergeben möchte.
Danach kommt die ursprüngliche Formel. Nur an den Stellen, an denen ursprünglich der fixe Zellbezug A1:E24 stand, kommt jetzt der Name „Bezug“ rein.

Und wenn ich in das Kommentarfeld auch noch eine kleine Erläuterung schreibe, wird mir diese später bei der Formeleingabe als Hilfetext angezeigt:

Der Kommentar wird als Hilfe ausgegeben

Der Kommentar wird als Hilfe ausgegeben

So sieht dann die Funktion im Einsatz aus:

Die neue Formel im Einsatz

Die neue Formel im Einsatz


Die neue Formel im Einsatz (Fortsetzung)

Die neue Formel im Einsatz (Fortsetzung)

Ziemlich praktisch, oder?

Anwendungsbeispiel 3: Die Osterformel

Wer schon mal versucht hat, einen Kalender in Excel zu erstellen, in dem auch die gesetzlichen Feiertage eingetragen sind, wird sicherlich über die Osterformel gestolpert sein. Viele der beweglichen Feiertage sind nämlich vom Ostersonntag abhängig:

  • Der Karfreitag liegt 2 Tage vor Ostern
  • Christi Himmelfahrt liegt 39 Tage nach Ostern
  • Der Pfingstsonntag liegt 49 Tage nach Ostern

und so weiter.

Den Ostersonntag kann man mit einer ziemlich komplizierten Formel berechnen, die kaum ein Mensch versteht, geschweige denn sich auch noch merken kann. Zum Beispiel mit dieser:
=DM((TAG(MINUTE(A1/38)/2+55)&".4."&A1)/7;)*7-6
In Zelle A1 wird dabei das Jahr erwartet, für das man den Ostersonntag berechnen möchte.

Und du ahnst es bereits: Das wäre ein perfekter Fall für die LAMBDA-Funktion!

Einfach den Namen „OSTERN“ angelegt und Lambda um die oben genannte Formel gepackt. Die Zelladresse A1 in meiner ursprüngliche Formel wird dabei durch den selbstgewählten Namen „Jahr“ ersetzt:
=LAMBDA(Jahr;DM((TAG(MINUTE(Jahr/38)/2+55)&".4."&Jahr)/7;)*7-6)

Eine Funktion für den Ostersonntag

Eine Funktion für den Ostersonntag


Die neue OSTERN-Funktion im Einsatz

Die neue OSTERN-Funktion im Einsatz

Ich bin sicher, du findest viele weitere nützliche Anwendungsfälle für diese Funktion.

Eigene Funktionen dauerhaft bereitstellen

Eine gute Nachricht ist, dass Arbeitsmappen mit enthaltenen LAMBDA-Funktionen weiterhin im normalen XLSX-Format gespeichert bleiben können. Das VBA-Format XLSM ist also hier nicht nötig.

Aber:
Jede auf die beschriebene Weise erstellte eigene Funktion steht nur in der aktuellen Arbeitsmappe zur Verfügung. Wenn ich eine andere Excel-Datei öffne oder eine neue leere Arbeitsmappe erzeuge, kann ich diese Funktionen erst einmal nicht nutzen. Es gibt nun verschiedene Möglichkeiten, diese Einschränkung zu umgehen.

Im einfachsten Fall kopierst du eine Zelle, in der du eine eigene Funktion verwendet hast (zum Beispiel die OSTERN-Formel), einfach per Copy & Paste in eine andere Arbeitsmappe.

Formelzelle zwischen Arbeitsmappen kopieren

Formelzelle zwischen Arbeitsmappen kopieren


Dadurch wird in der neuen Datei automatisch im Hintergrund der Name mit der LAMBDA-Funktion angelegt und du kannst die Formel dort dann genauso benutzen, wie in der ursprünglichen Datei.

Noch besser ist es jedoch, du erstellst dir eine eigene Standard-Arbeitsmappenvorlage mit allen deinen Lambdas. Und diese Vorlage wird dann automatisch geladen, wenn Excel gestartet wird.

Das sind die notwendigen Schritte:

  1. du legst eine neue, leere Arbeitsmappe an
  2. im Namensmanager definierst du alle benötigten Lambdas
  3. die Arbeitsmappe wird dann als Vorlagenformat XLTX mit dem Namen „Mappe.xltx“ gespeichert,
  4. und zwar im Autostartverzeichnis von Excel, damit sie automatisch bei jedem Öffnen von Excel geladen wird

Das Autostartverzeichnis befindet sich normalerweise hier:
C:\Users\(DeinBenutzername)\AppData\Roaming\Microsoft\Excel\XLSTART

Da das AppData-Verzeichnis standardmäßig ausgeblendet ist, musst du im Windows-Explorer in den Anzeigeeinstellungen erst festlegen, dass ausgeblendete Elemente auch angezeigt werden:

Das Autostart-Verzeichnis sichtbar machen

Das Autostart-Verzeichnis sichtbar machen

Damit solltest du in Zukunft jederzeit Zugriff auf deine Lambdas haben.

Fazit

Die gezeigten Beispiele haben die Möglichkeiten von LAMBDA nur angerissen. Wie du aber trotzdem gesehen hast, kann die Funktion den Umgang mit komplexen Formeln deutlich vereinfachen – wenn man sich darauf einlässt.

Die Vorteile:

  • eine einfache und flexible Handhabung für den Anwender durch eigene, sprechende Funktionsnamen.
  • die Arbeitsmappen können weiterhin im XLSX-Format gespeichert werden
  • eigene Lambdas können mit ein wenig Vorbereitung auch dateiübergreifend verwendet werden

Die Nachteile:

  • die LAMBDA-Funktion steht nur in Microsoft 365 und Excel 2024 zur Verfügung
  • der Umgang mit ihr ist etwas gewöhnungsbedürftig (Umweg über den Namensmanager)

Auch wenn ich, wie eingangs geschrieben, lange Zeit einen großen Bogen um diese Funktion gemacht habe, kann ich den Nutzen für entsprechende Anwendungsfälle nicht bestreiten.

Was ist deine Meinung zu dieser Funktion? Lass es uns in den Kommentaren wissen!
 

Das könnte dich auch interessieren:
Und immer daran denken: Excel beißt nicht!

P.S. Die Lösung ist immer einfach. Man muss sie nur finden.
(Alexander Solschenizyn)

P.P.S. Das Problem sitzt meistens vor dem Computer.



Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

9 Gedanken zu “Eine sehr spezielle Funktion: LAMBDA

  • Avatar-Foto
    Andreas Neumann

    Danke für diesen Beitrag und die enthaltenen Beispiele. Diese Funktion hätte ich schon oft gebrauchen können. Es kommt immer wieder vor, dass derselbe Bezug in einer Formel mehrfach vorkommt. Dann muss jedes mal genau geschaut werden, dass er auch überall ausgetauscht wird. Da hilft die Lambda-Funktion auch wenn am Anfang der Aufwand vielleicht etwas höher ist. Aber sobald die Formel mehrfach benutzt wird macht sich dieser Aufwand bezahlt.

    • Avatar-Foto
      Martin Weiß Autor des Beitrags

      Hallo Andreas,

      ganz genau. Sobald ein Formelteil mehrmals vorkommt oder die Formel einfach sehr komplex ist, bietet sich LAMBDA an.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Matthias

    Hallo Martin,
    eine echt interessante Funktion. Je nach Einsatz auch eine Alternative zur Let-Funktion (einmalig vs. wiederverwendbar).

    Bei dir lernt man echt als Profi auch immer wieder noch dazu 😉

    Weiter so,
    Matthias

    • Avatar-Foto
      Martin Weiß Autor des Beitrags

      Hallo Matthias,

      vielen Dank für das Lob! Ja, die LET-Funktion ist in dem Zusammenhang auch interessant und verdient mal eine eigene Betrachtung.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Martin

    Sehr gut, jetzt habe ich zumindest in Excel mal verstanden, was die Lambda-Funktion macht und wozu man sie braucht. 😀

    In Python hab ich das immer noch nicht so ganz begriffen, aber mit dieser neuen Info bekomme ich da vielleicht auch eher einen Zugang. Für was Excel doch alles gut sein kann…

    Bei der Gelegenheit möchte ich anmerken, dass ich ein großer Fan deines Blogs bin, auch wenn wir bei der Arbeit noch bei Office 2019 hängen weshalb ich einiges nicht umsetzen kann. Aber ich lese dennoch fast alle deine Artikel, einfach weil immer wieder auch Anregungen für mich dabei sind.
    Mach weiter so!

    • Avatar-Foto
      Martin Weiß Autor des Beitrags

      Hallo Martin,

      das freut mich, wenn der Artikel ein paar neue Erkenntnisse gebracht hat. Und vielen Dank für das tolle Feedback zu meinem Blog!

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Jochen

    Ich gestehe – ich liebe es, neue Funktionen in Excel auszuprobieren und ich fand LAMBDA eigentlich sofort ziemlich spannend. Im täglichen Umgang sind die im Artikel genannten Nachteile (Verfügbarkeit in den verschiedenen Excel-Versionen und Portabilität zwischen Dateien) ein echter Hemmschuh. Deshalb wird LABDA für mich vorerst weiter zum ‚Angeberwissen‘ zählen, mit dem man schöne Dinge zaubern kann.
    In der Praxis musste ich tatsächlich schon ein Lösung, die ich mit LAMBDA geschrieben hatte mit Hilfsspalten ‚zurückbauen‘, weil der Empfänger der Datei eine andere Excel-Version benutzt hat.

    • Avatar-Foto
      Martin Weiß Autor des Beitrags

      Hallo Jochen,

      da sprichst du einen ganz wichtigen Punkt an. Wer auf den Datenaustausch mit anderen Anwendern angewiesen ist, muss den Faktor „Portabilität“ immer berücksichtigen. Sonst wird es früher oder später Probleme geben…

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Julius

    Cool, erinnert mich stark an die LET-Funktion, die bringt ähnliche Vorteile mit sich (umfangreichere Formelbestandteile, die mehrfach vorkommen, kann man in einen innerhalb der LET-Formel definierten Eigennamen umwandeln und immer wieder abrufen, man kann auch jeden Bestandteil einer Formel benennen, um am ende die Logik dahinter leichter erkennen zu können, und nicht zuletzt ist diese Funktion performanter, weil die Formel den Teil nur einmal berechnet und nach Bedarf immer wieder abruft – würde man den Teil mehrmals in der Formel komplett eintragen, würde auch jedesmal die Berechnung stattfinden – kann bei rechenintensiven Funktionen tatsächlich einen spürbaren Unterschied machen.

    LAMBDA habe ich bisher auch ziemlich ignoriert, weil ich aus dem Namensmanager nicht so richtig schlau werde – aber jetzt habe ich mir vorgenommen mich mal damit zu befassen 🙂

    An VBA führt leider trotzdem in vielen Hinsichten kein Weg vorbei, ich nutze das in vielen Fällen zum ein- und ausblenden von Zellbereichen oder Blättern, um Blatt- und Mappenschutz gezielt für viele Bereiche und mit Passwort zu vergeben, aber halt mit nur einem Klick, und um PDFs von bestimmten Blättern zu generieren (oder eine Versand-Datei zu erzeugen, bei der die Datenbasen gelöscht wurden und nur noch die Pivots übrig bleiben). So etwas dürfte auch mit LAMBDA nicht möglich sein 😉