Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hallo zusammen,
ich werd grad irre.
Folgende Dummyformel funktioniert - es werden die Datümer vom 1.1. - 31.1.2025 aufgelistet (gespillt) und zusätzlich um 3 Nullwerte erweitert:
=LET(x;DATUM(2025;1;SEQUENZ(31));WT;WOCHENTAG(INDEX(x;1);2);y;ERWEITERN(x;ZEILEN(x)+3;1;0);y)
Wenn ich jetzt aber anstatt der roten konstanten 3 die Variable WT einsetze (die auch den Wert 3 enthält, da der 1.1.2025 ein Mittwoch ist), spillt die Formel nicht mehr (?!?!) sondern zeigt nur noch den Wert 1.1.2025 an.
=LET(x;DATUM(2025;1;SEQUENZ(31));WT;WOCHENTAG(INDEX(x;1);2);y;ERWEITERN(x;ZEILEN(x)+WT;1;0);y)
Ich nutze die aktuell Beta-Version Version 2502 Build 16.0.18502.20000) 64 Bit
Was läuft hier schon wieder schief bzw. wo liegt hier der Hase im Pfeffer?
P.S.: Bitte nicht nach dem Sinn der Formel fragen - es geht mir ausschließlich um das unterschiedliche Verhalten (Spill - kein Spill).
Registriert seit: 13.04.2014
Version(en): 365
16.01.2025, 18:30
(Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2025, 18:39 von BoskoBiati.)
Hi,
mach´s einfach so:
Code:
=LET(x;DATUM(2025;1;SEQUENZ(31));WT;WOCHENTAG(INDEX(x;1);2);y;ERWEITERN(x;ZEILEN(x)+INDEX(WT;1);1;0);y)
Mit dem Code kannst Du die Zahl der Nullen variieren, von 0-7, indem Du einfach den Index bei WT veränderst:
Code:
=LET(x;DATUM(2025;1;SEQUENZ(31));WT;REST(INDEX(x;1);7)-4;y;ERWEITERN(x;ZEILEN(x)+INDEX(WT;1);1;0);y)
Hat wohl die gleiche Ursache wie bei Deinem anderen Spill-Problem, wo jemand, ich glaube es war Onur, festgestellt hat, dass so verschachtelte Funktionen nicht funktionieren.
Lösung ist übrigens die Gleiche wie da:
Code:
=LET(x;DATUM(2025;1;SEQUENZ(31));WT;WOCHENTAG(INDEX(x;1);2);y;ERWEITERN(x;ZEILEN(x)+@WT;1;0);y)
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Danke, Edgar.
Mir ging es zwar nicht um eine Alternative, aber es ist ja schon wieder interessant, dass es mit INDEX(WT;1) funktioniert - nur warum? Die Variable WT enthält doch nur den einzelnen Wert 3 (und kein Array) - warum muss man den jetzt noch mit INDEX(WT;1) extrahieren? Ist das in den "klassischen" 365-Versionen auch so? Offensichtlich passt hier ja was nicht zusammen...?!
Registriert seit: 13.04.2014
Version(en): 365
Hi,
habe gerade noch was ergänzt.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Edgar, nochmal danke!
Da scheint SEQUENZ in der Tat ne entscheidende Rolle zu spielen.
Registriert seit: 04.04.2017
Version(en): Excel365
16.01.2025, 19:53
(Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2025, 20:01 von oee.)
Hi Boris,
Das Problem ist, dass es mit Wochentag(Heute()) in deiner Formel funktioniert, aber nicht, sobald INDEX oder ZEILENWAHL ins Spiel kommt.
WOCHENTAG(INDEX(x;1);2) ist zwar EINE einzige Zahl, aber da sie auf ein Array (x) zugreift, wird sie jedes mal, wenn sich x durch die Sequenz ändert, neu berechnet und somit wie ein Array behandelt.
WT sollte fix und somit unabhängig vom Array sein:
=LET(w;DATUM(2025;1;1);x;SEQUENZ(31;;w);WT;WOCHENTAG(w;2);y;ERWEITERN(x;ZEILEN(x)+WT;1;0);y)
Gruß
Onur
Erweitern funktioniert auch nicht, sobald PAD variabel und nicht fix ist.
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi Onur,
danke für die Erläuterung. Leuchtet mir zwar ein, aber wirklich billigen möchte ich es nicht, zumal sich das SEQUENZ-Array ja auch gar nicht ändert, hat es doch einen fixen Beginn und eine feste Größe.
Aber an dieser Ecke muss man halt aufpassen - und das ist gut zu wissen.
Registriert seit: 04.04.2017
Version(en): Excel365
Aber SEQUENZ ist bei so einer Formel sowas wie eine Laufvariable, die jedes mal ein neues WT erzeugt, wenn sie sich ändert. Und DAS mag ERWEITERN () nicht.
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Andererseits sollte es aber so sein, dass LET-Variablen von links nach rechts definiert werden und somit weiter rechts Ihren unveränderlichen Wert zur Verfügung stellen (außer bei Rekursion natürlich).
Nun denn 😉
Registriert seit: 04.04.2017
Version(en): Excel365
16.01.2025, 20:19
(Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2025, 20:39 von oee.)
Aber WT ist nicht wirklich "unveränderlich", da sie laut deiner Formel von x abhängt, dessen Wert sich dauernd ändert und somit bei jedem "Schleifendurchlauf" neu berechnet werden muss, auch wenn das Ergebnis jedes mal gleich ist. So eine Formel mit SEQUENZ arbeitet nun mal wie eine FOR-NEXT-Schleife.
Sobald du x ohne SEQUENZ definierst (durch einem Bereich), klappt deine Formel, da dann x als ein komplettes Array behandelt wird.
MIT SEQUENZ jedoch wird sie als eine FOLGE von (einzelnen) Werten, die sich mit SEQUENZ verändern, behandelt.
Dadurch verändert sich für die Formel auch jedes mal WT.
Guckst du hier:
boris.xlsx (Größe: 10,06 KB / Downloads: 1)
Jetzt habe ich dich aber genug vollgelabert.