Kalender von .. bis generieren, aber immer der Monats-Erste bis zum Ultimo
Diese Aufgabe aus einem Forum ist zwar grundsätzlich gelöst, hat mich aber gereizt, das Ganze in Power Query zu lösen. 💡 Und zwar auf eine Weise, die auch von „Normal-Usern” angewendet werden kann. Es geht nämlich auch prinzipiell viel einfacher, wenn … ja wenn ich in der Programmierung zuhause bin und in PQ „mal so eben” eine Funktion erstellen kann. 🙄 Aber es gibt auch durchaus einen gangbaren Weg für all jene, die gerne genau wissen möchten, was sie da gerade tun. 😎
Ich habe noch einen weiteren zurzeit der Erstellung dieses Beitrages nicht benannten Aspekt hinzugefügt: Die erzeugten kalendarischen Daten sollen meiner Ansicht nach die Überschriften einer Tabelle bzw. Liste sein und das habe ich einfach einmal so festgelegt. Folgende Schritte bin ich dazu gegangen:
- In die Zellen A1 und B1 habe ich die Überschriften und jeweils eine Zeile darunter das Start- und das Ende-Datum eingetragen. Hier der Vorgabe entsprechend das Datum 07.08.2018 als Start und als Ende den 06.02.2019.
- Als Tabelle formatiert und Import in Power Query.
- Den Datentyp aller Spalten auf (nur) Datum geändert, mich stört (nein, mich nervt) die automatisch angehängte Uhrzeit.
- Die Spalte Start markiert, Menü Transformieren | Datum | Monat | Monatsbeginn.
- Die Spalte Ende markiert, Menü Transformieren | Datum | Monat | Monatsende.
- Nach einer Prüfung, ob die Daten korrekt sind, Umwandlung der Daten in eine Ganze Zahl. Damit lässt sich nämlich wesentlich einfacher der gewünschte Zahlenbereich erstellen. 💡
- Menü Spalte hinzufügen | Benutzerdefinierte Spalte und Sie geben in die Felder folgende Werte ein:
- Neuer Spaltenname Kalender
- Benutzerdefinierte Spaltenformel:
=List.Numbers([Start], [Ende]-[Start]+1)
wobei Sie darauf achten müssen, dass Sie die exakt gleiche Groß- Kleinschreibung wie hier gezeigt verwenden.
Es wurde eine neue Spalte erstellt, die erwartungsgemäß die Überschrift Kalender hat. Das einzige Feld darunter hat den Inhalt List. Wenn Sie mit Power Query noch nicht so erfahren sind, wird Sie eventuell in der Überschrift das Symbol rechts, der Doppelpfeil etwas irritieren:
- Nach einem Klick auf diesen Doppelpfeil öffnet sich ein Kontextmenü, wo sie die obere Auswahl Auf neue Zeilen ausweiten anklicken.
- Umgehend ändert sich das Bild im Abfrage-Editor. Die Spalten Start und Ende enthalten zig mal untereinander die gleichen Werte und die Spalte Kalender ist mit den numerischen Werten von 43.313 bis 43.524 gefüllt:
- Die beiden ersten Spalten Start und Ende werden nicht mehr gebraucht, also Entfernen. Das geht entweder über das Menü Start oder einen Rechtsklick in die Überschrift und dann im Kontextmenü Entfernen wählen.
- Da die anfänglichen kalendarischen Daten ja in ihr numerisches Äquivalent, die seriellen Daten umgewandelt worden sind, werden Sie diese nun wiederum als „normales” Datum darstellen; dazu hier die Spalte mit dem Datentyp Datum formatieren.
- Die einzelnen Tage sollen ja in in 1 Zeile nebeneinander in je einer Spalte und nicht untereinander dargestellt werden. Darum im Menü Transformieren ein Klick auf Vertauschen, was dem transponieren in Excel entspricht.
- Theoretisch ist damit das Ziel erreicht. Da ich aber (wie bei bereits oben angemerkt) davon ausgehe, dass diese Werte die Überschriften einer Excel-Tabelle sein sollen, klicke ich im Menü Start auf Erste Zeile als Überschriften verwenden und mein Ziel ist nun endgültig erreicht.
Power Query fügt nun eine weitere Zeile in den Ablauf (Angewendete Schritte) ein, warum auch immer. 🙄 Es wird der Typ der Überschriften (Header) auf „any” (beliebig) geändert. Jetzt nur noch Schließen & laden und die anfangs 2‑spaltige Tabelle wird durch den Kalender ersetzt.
Soll die zuerst erstellte Tabelle mit den kalendarischen Eckdaten bestehen bleiben, dann können Sie an dieser Stelle so vorgehen:
- Erstellen Sie zu Beginn ein Duplikat der Abfrage, entweder über Start | Verwalten | Duplizieren oder wenn das linke Seitenfenster sichtbar ist per Rechtsklick in den Eintrag Tabelle1 und dann Duplizieren.
- Aktivieren Sie wiederum die zuerst erstellte Tabelle1.
- Klicken Sie im rechten Seitenfenster bei Angewendete Schritte auf die 2. Zeile (Geänderter Typ) und per Rechtsklick wählen Sie im Kontextmenü die Zeile Bis zum Ende löschen und bestätigen Sie die Sicherheitsabfrage.
- Tabelle1 werden sie dann entweder getrennt per Schließen & laden in… als Nur Verbindung speichern oder später auf diesem Wege den Speichertyp ändern. – Wenn Sie das bereits zu Beginn des gesamten Prozederes machen, also gleich nach dem Import, ist das natürlich etwas bequemer … 😎
Fast vergessen: Hier mein Ergebnis. 😉