$ (IV) PQ: Montag einer (ISO) Kalenderwoche berechnen

Xtract: Auf der Basis des Jahres und der Kalen­der­woche soll das Datum des Mon­tags der entsprechen­den Woche nach ISO berech­net wer­den. Der Wochen­be­ginn ist also der Mon­tag und die KW wird auch anders berech­net als in den USA.

  Wis­sens­stand: Lev­el 3 ⇒  Excel GUT!, min­destens Basis-Ken­nt­nisse in Pow­er Query   

Das kalendarische Datum des Montags einer als numerischen Wert eingegebene Kalenderwoche berechnen

In Plain Excel ist es mit unter­schiedlichen Formeln möglich, aus ein­er gegebe­nen ISO-Kalen­der­woche (KaWo) den Wochen­be­ginn, also den Mon­tag zu berech­nen. Die bei uns gültige ISO-Norm stellt sich in manchen Punk­ten anders dar als die in den USA gültige Berech­nungs­grund­lage, darum ist auch ein ander­er Berech­nungsweg erforder­lich.

Warum soll ger­ade der Mon­tag berech­net wer­den? Nun ja, hier in Europa ist nicht der Son­ntag son­dern der Mon­tag der erste Tag der Woche. Und was die Berech­nung in Excel ange­ht, da bieten sich die hier in Excel-Formeln ange­bote­nen Möglichkeit­en an, das Prob­lem zu lösen.

Und ich habe mir eine der Formeln her­aus gesucht, um diese als Basis für eine Umset­zung in Pow­er Query zu nutzen. Ver­suchen Sie ein­fach ein­mal die Formel von Franz Pölt:
=("4.1." & A2) + A1 * 7 - 7 - REST("2.1." & A2; 7)
denn die lässt sich später auch ganz gut in PQ umset­zen. Falls Sie (beispiel­sweise) die entsprechende Web­site ger­ade nicht vor sich haben hier der Hin­weis, was in welch­er Zelle ste­ht: In A1 ist der numerische Wert der Kalen­der­woche (also beispiel­sweise 15) und in A2 das Jahr als Zahl, beispiel­sweise 2020.

Ins Sprachdeutsch über­set­zt würde das in etwa so laut­en:

  1. ("4.1."&A2) → Der 4. Jan­u­ar des entsprechen­den Jahres.
  2. +A1*7-7 → Addiere (dazu) den Wert der mit 7 mul­ti­plizierten Kalen­der­woche und sub­trahiere hier­von 7.
  3. Berechne den Rest von diesem Wert: "2.1.Jahr" divi­diert durch 7 und sub­trahiere das Ergeb­nis dieser Berech­nung von dem zuvor berech­neten Ergeb­nis.

Angenom­men, Sie wollen das oben genan­nte Beispiel (Mon­tag der KW 15 aus 2020) umset­zen, dann würde die aufgelöste Formel in Excel so ausse­hen:
=("4.1.2020") + 15*7 - 7 - REST("2.1.2020"; 7)
und wenn Sie das (numerische) Ergeb­nis dieser Formel als Datum for­matieren, dann wird Ihnen der 06.04.2020 als Ergeb­nis in der entsprechen­den Zelle ste­hen.

Und nun sind Sie gefordert. 😉 Auf der Basis der oben aus­ge­führten Auf­schlüs­selun­gen der Formel ist es dur­chaus möglich, eine Formel in Pow­er Query zu gener­ieren. Sie kön­nten in der Pow­er Query-Formel zwar die gener­ierten kalen­darischen Dat­en auch in Anführungsstriche set­zen und dann zu einem PQ-gerecht­en Datum umwan­deln, ich halte aber die #date() – Funk­tion für geeigneter.

Und Sie wer­den gewiss die Funk­tion Number.From() nutzen, um zum Ergeb­nis zu kom­men. Die Funk­tion Date.From() wird im End­ef­fekt dafür sor­gen, dass das Ergeb­nis der Funk­tion auch als Datum aus­gegeben wird.

Für eine ein­ma­lige Anwen­dung in Pow­er Query mag dieser Weg ja noch ganz passend sein. Wenn Sie aber öfter diese Funk­tonal­ität brauchen, dann bietet sich eine UDF (userde­fined func­tion), eine benutzerdefinierte Funk­tion an. Die kön­nen Sie in jede beliebige Abfrage per copy/paste ein­binden und für die Berech­nung des Mon­tags nutzen. Ich habe eine solche Funk­tion erstellt und auch noch um die Möglichkeit ergänzt, dass option­al angegeben wer­den kann, welch­er Wochen­tag statt des Mon­tags berech­net wer­den soll; eine Zahl der zu addieren­den Tage (1 für Dien­stag bis 6 für Son­ntag) sorgt dann für die entsprechende Berech­nung.

Ein wichtiger Hin­weis
Der Link auf den Folge-Beitrag begin­nt mit „$$”. Das bedeutet für alle der­ar­tig aus­geze­ich­neten Beiträge, dass diese kostenpflichtig sind (eine geringe Spende).
Näheres dazu in der ange­sproch­enen Mail. Auch Wis­sen hat einen Wert!


Wie eben schon dargelegt habe ich auch eine aus­führliche Beschrei­bung meines Lösungswegs in bekan­nter, aus­führlich­er Form erstellt. Eine E‑Mail an mich mit dem Stich­wort / Betr­e­ff $$ PQ: Mon­tag ein­er (ISO) Kalen­der­woche berech­nen und Sie bekom­men von mir den entsprechen­den Link sowie das erforder­liche Pass­wort zum öff­nen des Beitrags, sofern Sie mir eine eine Spende von 4,00€ (Über­weisung, Ama­zon-Gutschein oder Pay­Pal Fre­und­schaft) haben zukom­men lassen.

▲ nach oben …

Dieser Beitrag wurde unter Datentyp anpassen, Datum & Zeit, Datum und Zeit, Power Query, PQ-Formeln (Sprache M), Spende/Donation abgelegt und mit , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.