Lambda-Funktionen in Excel
#11
Danke, maninweb ;)

Die österreichische Einkommensteuer folgt linearen Abschnitten:

=Abschnittssumme(40000;{0;11;18;31;60;90;1000}*1000;{0;0;20;35;42;48;50;55}%) ergibt € 9.730 für € 40.000 Einkommen.

Wer genau hinschaut in die Funktion: Arg3 hat einen Eintrag mehr, als Arg2. Das ist notwendig so.

Die zugehörige LAMBDA-Funktion ist hier zu finden.
______________

Etwas anderes ist leider ärgerlich: Wie sicherlich bekannt, kann man RANG und ZUFALLsfkt. von Excel nicht in einer Formel kombinieren. Es braucht also leider immer Hilfszellen. Leider klappt auch eine ZUFALLSMATRIX innerhalb von LET nicht, die man dort dann mit RANG verarbeiten könnte. Das betrifft leider viele Dinge, wo es nur um eine zufällige Rangfolge geht.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#12
Das Sammelsurium von LAMBDA()-Funktionen.

Die wichtigste (bisher) ist PIZZAAREA.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#13
Bill Jelen hat einen ziemlich veralteten Avatar (von vor 18 Jahren) ...

... und LET hätte er ja nun wirklich weglassen können ;) Andererseits unterstreicht es die Notwendigkeit von Pizza (für mich eine Calzone bitte).
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#14
Oh, das MrExcel-Forum hat einen neuen User.
Seit 58 Minuten dabei und schon zwei Beiträge.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#15
Hallo Mourad

In diesem Artikel nennst du die Funktion ARRAY.APPEND und ein paar Zeilen später heißt es dann ARRAY.CREATE.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • maninweb
Antworten Top
#16
Hier ein Beispiel aus dem Leben:

=LET(a;{"SVW"."FCB";"HSV"."BVB";"BSC"."FCU"};ARRAY.COMBINE({"Heim"."Ausw."};ARRAY.COMBINE(a;MTRANS8(a;1););))

ergibt drei Hinspielpaarungen mit Rückspielen sowie (neue!) Feldbezeichner dazu:

PHP-Code:
Heim    Ausw.
SVW    FCB
HSV    BVB
BSC    FCU
FCB    SVW
BVB    HSV
FCU    BSC 

Das gleiche geht natürlich mit der Erstellung von doppelter Buchführung genauso, dann entsprechend mit "Soll" und "Haben".

MTRANS8(a;1) ist dabei kürzer als INDEX(a;SEQUENZ(ZEILEN(a));{2.1}); übrigens reicht INDEX(a;;{2.1}) nicht aus.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#17
Moin,

@shift-del: lieben Dank. Stimmt, da habe ich das noch verwechselt. Hab's korrigiert :-)

Nebenbei, ich überlege, eine Website mit allen möglichen Lambdas aufzusetzen + Github = Bibliothek.
Domain habe ich schon mal, nur mit dem Website-System bin ich noch nicht sicher. WordPress
scheint mir hierfür ungeeignet.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#18
Moin

Früher hat man lange Formeln (mit Recht) kritisiert weil sie kaum nachvollziehbar waren (Auditfähigkeit), weil sie fehleranfällig waren, weil sie nicht (einfach) erweiterbar waren.

Und jetzt kommt der Hype mit LET() und LAMDBA() und bringt uns durch die Hintertür die langen Formeln wieder zurück.
Wobei nun ein weiterer Nachteil hinzukommt: Die Formelauswertung versagt bei der Benutzung der Variablennamen.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#19
BEREICH.VERSCHIEBEN nicht ersetzbar innerhalb von =LAMBDA() bei Ausgabe eines grenzensprengenden Arrays

Ich beziehe mich noch mal auf die Verbesserung von SORTBY.KEYRANGE. In dem Fall war es ziemlich wichtig, den KEYRANGE (das ist das kleine Array "Keys", welches Sortierspalten und -richtung definiert) als Zellbereich durch eine Arraykonstante ersetzen zu können, damit man nicht so etwas Lästiges wie den Kriterienbereich bei SPEZIALFILTER mitschleppen muss. 

Daher musste BEREICH.VERSCHIEBEN, welches nicht mit Arraykonstanten funktionieren kann, (irgendwie) ersetzt werden.

Bei UNPIVOT hingegen ist der Ersatz des Zellbereichs durch eine Arraykonstante zum Glück ziemlich unsinnig, so dass BEREICH.VERSCHIEBEN bleiben kann. Die Volatilitätsjünger ersetzen es bekanntlich gern durch INDEX:INDEX, was aber nicht gelingt, wenn der INDEX-Bereich verlassen werden soll, wie hier bei UNPIVOT. Denn UNPIVOT deformiert - im Gegensatz zu SORTBY.KEYRANGE, wo ich einfach ein fixes größeres Array {0.0.0.0.0.0.0.0.0;0.0.0.0.0.0.0.0.0} vereinbare - die Maße des Arrays von variablem 6 * 5 zu variablem 13 * fixem 3 (im dortigen Beispiel). Und da komme ich mit INDEX ohne weiteres nicht mehr hin. 

Eine Arraykonstante kann man also (vermutlich) nur über eine Operation mit einer größeren Arraykonstante in den Abmessungen verändern. 

Eine andere Umschreibung, etwa mit INDIREKT(ADRESSE(...)&":"&ADRESSE(...)), bringt uns auch nicht weiter, da Excel dann ja keine lokale Verarbeitung (in der UDF) mehr vornähme.

FAZIT:
  1. Um BEREICH.VERSCHIEBEN kommt man bei gewünschtem Deformieren eines Ausgangsarrays über eine seiner Grenzen hinaus mit einer LAMBDA-Funktion nicht herum.
  2. BEREICH.VERSCHIEBEN verarbeitet aber nur Zellbezüge, so dass das übergebene Array keine Konstante sein darf.
  3. Gibt es die Möglichkeit einer fixen Obergrenze, kann man aber eine solche Konstante zu einem Obergrenzen-Nullarray addieren. Möglicherweise geht das auch statt Addition per Zuweisung - für andere Datentypen als Zahl. Noch nicht ausprobiert.
Achtung: Möglicherweise stimmt der ganze Artikel oder Teile davon nicht - da es vielleicht eine andere Lösung gibt.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#20
Folgendes Verzeichnis könnte ins OP dieses Threads. Dann diesen Post bitte gern löschen! Danke! - Wird dann in Abständen auf die gleiche Weise erweitert/aktualisiert.
_______________________________

Alphabetisches Inhaltsverzeichnis LAMBDA-Funktionen 
(teilw. umbenannt) mit Anfangsbezügen in diesem CEF-Thread

ARRAY.APPEND (maninweb) (Arr1;Arr2;Default) ähnlich wie ARRAY.COMBINE
ARRAY.COMBINE (LCohen) (Arr1;Arr2;Origin) hängt Arr2 unter Arr1 und liefert als Origin wahlw. Tabellen-Nr mit/ohne Satz-Nr
ARRAY.CREATE (maninweb) (Arr1;Arr2;Default) Code und Beschreibung und/oder Link folgen
ARRAY.PUSH (maninweb) (Arr1;Default) Beschreibung und/oder Link folgt
ARRAY.REMOVE.FIRSTN (maninweb) in Anlehnung an PowerQuery-M
ARRAY.REMOVE.LASTN (maninweb) in Anlehnung an PowerQuery-M
ARRAY.REVERSE (maninweb) (Arr) dreht die letzte Zeile von Arr nach oben
ARRAY.SHAKE (LCohen) (Arr) verteilt Arr-Inhalte zufällig neu (1:1 je genau einmal)
EASTER.GAUSS (maninweb) (Year) errechnet den Ostersonntag vom Year nach Gauss
INCOMETAX.AUSTRIAN.2020 (LCohen) (zvE;Abschnitte;Sätze) berechnet die ö ESt auf das zvE anh. von %-Sätzen in €-Abschnitten
INCOMETAX.GERMAN.2004 (LCohenmaninweb) (zvE;Splitting) berechnet die Steuer auf das zvE normal oder mit Splitting
LAMBDA allg. mit Debuggingschritten (LCohen) - als Idee, wie man mittels WAHL verschiedene Ergebnistabellen ausgibt
LAMBDA allg. mit Lazy Finger (LCohen) - als Idee, mit Tastendruck statt Eingabe durch die LAMBDA-Zustände zu toggeln
LAMBDA.MREXCEL (MrExcel-LAMBDA-Ideeneinreichungen)
MTRANS8 (LCohen) (Arr;Zustand) rotiert ein Arr in 4 Richtungen, im Zustand normal oder revers
SPLIT (LCohen, maninweb) (Txt;[Orientation;]Delimiter) teilt Txt anhand Delimiter in Hoch- oder Quer-Orientation
SORTBY.KEYRANGE (LCohen) Korr1 Korr2 (Arr;Keys;Header) sortiert Arr anhand Keys aus Bereich mit oder ohne Header
SUBSTITUTE.MULTICHARS (LCohen) (Txt;Search;Replace) ersetzt Search-Zeichen im Txt durch Replace-Zeichen (rekursiv)
UNIQUE.PARTIAL (LCohen) Korr1 (Arr;Keys;Debugging) pivotiert Arr anhand Spalten-Keys. Debugging 0-6.
UNPIVOT (LCohen) (Arr) macht aus einem vorgeschriebenen Kreuztabellen-Arr eine pivotierbare Liste
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste