Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[LAMBDA] Diverse Helferlein
#11
Hallo,

vielen Dank für die Benachrichtigung. Melden werde ich es grundsätzlich. Zumal das definitiv nicht erwartungskonform ist.
Allerdings bin ich mir nicht sicher, ob's wirklich der Namensmanager ist. Denn folgendes:

Code:
DECUM({2;5;7;19}) gespillt ergibt 2;3;2;12
DECUM({2;5;7;19}) in der Bearbeitungszeile mit F9 ergibt 2;-3;-5;-17 (!)

Code:
LAMBDA(x;LET(d;SEQUENZ(ZEILEN(x));INDEX(x;d)-(d>1)*INDEX(x;d-1)))({2;5;7;19}) gespillt ergibt ebenfalls 2;3;2;12
LAMBDA(x;LET(d;SEQUENZ(ZEILEN(x));INDEX(x;d)-(d>1)*INDEX(x;d-1)))({2;5;7;19}) in der Bearbeitungszeile mit F9 ergibt ebenfalls 2;-3;-5;-17 (!)

Somit wird bei F9 immer der erste Wert aus dem Array genommen und mit dem aktuellen subtrahiert (2;2-5;2-7;2-19).
Folgende Funktion liefert mir das richtige Ergebnis (Name, F9, in SUMME)

Code:
=LAMBDA(Daten;MATRIXERSTELLEN(ZEILEN(Daten);1;LAMBDA(X;Y;WENN(X>1;INDEX(Daten;X;1)-INDEX(Daten;X-1;1);INDEX(Daten;X;1)))))({2;5;7;19})

Von daher ist meine Vermutung, dass das implizite Iterieren mit Deiner Variante nicht immer funktioniert. Und jetzt fällt es mir auch wieder ein: das Problem
hatte ich schon mal ganz am Anfang von LAMBDA, als ich LAMBDAs für große Zahlen erstellt hatte und daran lag, dass innerhalb desselben Arrays relativ zur
Position Werte extrahiert und generiert werden sollten, die quasi die alten Werte überschreiben. Das konnte ich nur lösen, indem ich ein neues Array erzeugt
hatte und die Werte dann dort reinkopiert bzw. reingeschrieben hatte.

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
#12
Ich ziehe meinen Hut vor Dir! Bearbeitungsleiste F9 habe ich in meinem Leben noch nie benutzt. :(

Allerdings ergibt das Bearbeitungszelle-LAMBDA mit SUMME umrankt das richtige 19, wo das Namen-Manager-definierte -23 ergibt. Daher ist da doch etwas faul.

Möglicherweise ist Dein Ansatz auch die Lösung dafür, mit SCAN zu entkumulieren. Denn bei meinen Versuchen werden anscheinend immer nur Pärchen behandelt.

So langsam bekomme ich jetzt den Unterschied MATRIXERSTELLEN zu WAHL geregelt. Denn WAHL ist beschränkt, MATRIXERSETLLEN nicht.

Andererseits dachte ich immer, dass innerhalb von LET jede Zuweisung auch wieder eine neue Matrix erstellt.
Antworten Top
#13
Hallo,

Danke. Bei mir ergibt F9 über SUMME(LAMBDA( ... ...)) in der Bearbeitungszeile -23 (!) und in der Zelle wird 19 (!) angezeigt.
Nur F9 über die LAMBDA markiert ergibt SUMME({2;-3;-5;-17}). Und SUMME(DECUM({2;5;7;19})) ergibt bei F9 dann auch -23.

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
#14
Hallo,

ich denke mal, SCAN kann nicht mit DECUM funktionieren bzw. macht keinen Sinn hier, weil ja SCAN implizit rekursiv
den davor berechneten Wert nimmt, um den neuen Wert gemäß dem Algo in LAMBDA zu berechnen.

Code:
=LAMBDA(Daten;SCAN(0;Daten;LAMBDA(A;V;V+A)))({1;2;5;3}) => 1;2;5;3 » 1 » 1;1+2=3 » 1;3;5+3=8 » 1;3;8;3+8=11 » 1;3;8;11

SCAN kann also nicht auf den Vorgänger des Originalarrays zugreifen. Anderes Beispiel:

Code:
=LAMBDA(Daten;SCAN("";Daten;LAMBDA(A;V;A&V)))({"a";"b";"c";"d"})

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
#15
DECUM geht mit den neueren Bordmitteln jetzt besser/klarer/kürzer/schnörkellos: =LAMBDA(d;LET(x;VSTAPELN(0;d);WEGLASSEN(x;1)-WEGLASSEN(x;-1)))

(steht so auch schon in PVT)

=SUMME(DECUM(...)) ist damit fehlerfrei. Mit der vorherigen (benannten!) Version weiterhin NICHT.
Antworten Top


Gehe zu:


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