PQQ: Jahreskalender mit Power Query erstellen (1)

Xtract: Mit Pow­er Query über eine Formel in der PQ-Sprache M einen Kalen­der für 1 Jahr in 1 Spalte erstellen lassen. Der Ein­fach­heit wegen keine Automatik für Schalt­jahre.

  Wis­sens­stand: Lev­el 1 ⇒ Ein­steiger in PQ, keine/kaum Erfahrung   

Power Query Quickies: Einen Jahreskalender automatisch erstellen lassen

Auch in Pow­er Query gibt es mehrere Wege, einen Jahreskalen­der automa­tisch erstellen zu lassen. In jedem Falle wer­den Sie dazu Funk­tio­nen der Abfrage­sprache M ein­set­zen. Und den­noch brauchen Sie keine Pro­gram­mi­er-Erfahrung, wenn die hier dargelegten Schritte exakt nachvol­lziehen. Ein grundle­gen­der Hin­weis vor­weg: Acht­en Sie unbe­d­ingt darauf, die Groß- Klein­schrei­bung genau so zu schreiben, wie hier im Beitrag dargestellt.

(1) Die Funktion List.Dates()

In der über­wiegen­den Zahl der Fälle kön­nen Sie die Funk­tion List.Dates() ohne weit­ere Ein­schränkun­gen ein­set­zen. Die Syn­tax dieser Funk­tion ist fol­gen­der­maßen:
List.Dates(Startdatum, Anzahl Inter­valle, Länge des Inter­valls)

Beispiel: =List.Dates(#date(2018,1,1), 365, #duration(1,0,0,0))

Im Pow­er Query-Edi­tor stellt sich das dann zu Beginn so dar:

Direkt nach der Eingabe der Funktion in die Eingabe-Leise

Direkt nach der Eingabe der Funk­tion in die Eingabe-Leise

Wie für alle von mir inter­pretierten Pow­er Query-Funk­tio­nen gilt der Hin­weis, dass Sie nach Möglichkeit auch auf die Orig­i­nal-Doku­men­ta­tion von Microsoft (in englis­ch­er Sprache) zugreifen soll­ten. Hier wäre es dieser Link:
msdn.microsoft.com/en-us/Query-bi/m/list-dates bzw. in deutsch: msdn.microsoft.com/de-de/Query-bi/m/list-dates

Die Argu­mente dieser Funk­tion näher betra­chtet:

  • Start­da­tum ist bei einem Jahreskalen­der naturgemäß der 1. Jan­u­ar des entsprechen­den Jahres. Wollen Sie einen beliebi­gen Zeitraum (beispiel­sweise ein Fiskal- bzw. Geschäft­s­jahr) darstellen, dann ist dieses der erste Tag des darzustel­len­den Zeitraums. Das Start­da­tum muss im For­mat date (Daten­typ: Datum) vor­liegen.
  • Anzahl Inter­valle ist ein numerisch­er Wert. Wenn sie die Tage eines Jahres darstellen wollen, dann wird dies in der Regel die Zahl 365 sein. Das entspricht der oben dargestell­ten Formel. Das The­ma „Schalt­jahr” wird weit­er unten disku­tiert.
  • Das Argu­ment Länge des Inter­valls erwartet einen Wert in Form ein­er #dura­tion()-Funk­tion. Die Argumente/Parameter hier sind: (Tag, Stunde, Minute, Sekunde) und diese sind natür­lich vom Typ Zahl.

Erstellen der Abfrage „Jahreskalender” auf dieser Basis

Ide­al­er­weise begin­nen Sie mit einem leeren Arbeits­blatt. In Excel 2016 gehen Sie über Dat­en | Neue Abfrage | Aus anderen Quellen | Leere Abfrage und tra­gen in die obere Eingabezeile für das Jahr 2018 diese Formel mit dem führen­den Gle­ich­heit­sze­ichen ein:
= List.Dates(#date(2018,1,1), 365, #duration(1,0,0,0))

Noch ein­mal zur Erin­nerung: Es soll im End­ef­fekt eine Abfrage mit kalen­darischen Dat­en erstellt wer­den, Beginn ist der 1. Jan­u­ar 2018, die Liste umfasst 365 Zeilen und das Inter­vall, der zeitliche Sprung zum jew­eils näch­sten Ele­ment soll 1 Tag, 0 Stun­den, 0 Minuten, 0 Sekun­den sein. Und wenn Sie nach Eingabe des Textes, der Formel die Einga­betaste drück­en oder irgend­wo in den freien Bere­ich unter­halb der Eingabezeile Klick­en, wird eine Liste im Datum-For­mat mit allen 365 Tagen erstellt:

Die per Funktion erstelle Liste mit den Jahresdaten

Die per Funk­tion erstelle Liste mit den kalen­darischen Jahres­dat­en

Bleibt eigentlich nach ein­er Kon­trolle nur noch ein Klick auf das Sym­bol Zu Tabelle, damit eine Abfrage aus dieser Liste erstellt wird. Anschließend wer­den Sie gewiss noch die Über­schrift anpassen, aber das ist ja Rou­tine. Und ein Blick auf den Daten­typ dieser Spalte wird ver­mut­lich Beliebig zeigen. In diesem Fall bitte auf Datum ändern, damit anschließend in der Excel-Tabelle auch kalen­darische Dat­en und keine seriellen Zahlen angezeigt wer­den. Nach Schließen & laden oder Schließen & laden in… haben Sie eine einspaltige Tabelle mit dem Datum jedes Tages des Jahres. In Excel kön­nen Sie dann natür­lich noch beliebige For­matierun­gen des Datums vornehmen. Und natür­lich kann diese Abfrage auch weit­er in Pow­er Query genutzt wer­den, denn der Aufwand für „nur” einen Jahreskalen­der für Excel wäre gewiss zu hoch.

▲ nach oben …

Schaltjahr

Mit schön­er Regelmäßigkeit (mit extrem weni­gen Aus­nah­men) sind alle Jahre, deren Jahreszahl sich „glatt” durch 4 teilen lassen Schalt­jahre. Da gibt es am 29. Feb­ru­ar einen zusät­zlichen Tag im Monat und das Jahr hat dann entsprechend 366 Tage. Und wie kön­nen Sie das berück­sichti­gen? Sie erin­nern sich gewiss, dass ich Sie habe kon­trol­lieren lassen, ob der let­zte Ein­trag in der Abfrage auch der 31. Dezem­ber bzw. der let­zte Tag des Geschäft­s­jahres ist. Und hier set­zt meine prag­ma­tis­che Kor­rek­tur-Möglichkeit an: Wenn in einem Schalt­jahr ein Tag zu wenig angezeigt wird, dann ändern Sie ein­fach die Formel:
= List.Dates(#date(2018,1,1), 366, #duration(1,0,0,0)) 
und das Jahr ist wieder „kom­plett”.

Und für „Spezis” hier der Hin­weis, dass es in der Formel­sprache M auch noch eine Funk­tion gibt welche erken­nt, ob es sich bei dem Jahr eines definierten Datums um ein Schalt­jahr han­delt oder nicht. Das Such­wort dazu: Date.IsLeapYear().

▲ nach oben …

zum The­ma „Jahreskalen­der in/mit Pow­er Query” gibt es noch mehr Beiträge in unserem Blog:
  • Teil 2 → Funk­tion List.Range (für beliebige Zeiträume) und nach Wahl Wochn­tage in getren­nte Spalte schreiben.
  • Teil 3 → Nur Arbeit­stage (ohne Woch­enende, Feiertage, Betrieb­surlaub).

Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?

Dann würde ich mich über einen Beitrag Ihrer­seits z.B. 1,00  freuen …

Dieser Beitrag wurde unter Datum & Zeit, Power Query, PQ-Quickies abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.