Spill funktioniert nicht mit WOCHENTAG
#1
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).
Antworten Top
#2
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.
Antworten Top
#3
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...?!
Antworten Top
#4
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.
Antworten Top
#5
Edgar, nochmal danke!
Da scheint SEQUENZ in der Tat ne entscheidende Rolle zu spielen.
Antworten Top
#6
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.
Antworten Top
#7
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.
Antworten Top
#8
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.
Antworten Top
#9
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 😉
Antworten Top
#10
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:

.xlsx   boris.xlsx (Größe: 10,06 KB / Downloads: 1)

Jetzt habe ich dich aber genug vollgelabert. 26
Antworten Top


Gehe zu:


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