Mehrere Von..Bis – Zeilen, für jeden Tag per Power Query eine eigene Zeile generieren
Per VBA/Makro ist das eigentlich für den Könner kein Thema. 😉
Auch wenn nur eine einziger Zeitbereich mit Start- bis Enddatum ausgefüllt werden soll, ist das mit normalen Bordmitteln des Excel per unterschiedlicher Methoden problemlos realisierbar. Anders sieht das aber aus, wenn so einige kleine Hindernisse (auch Gemeinheiten genannt) eingebaut sind und auch nicht nur 1, 2 oder 3 kurze Zeiträume so expandiert werden sollen, sondern reichlich mehr und dann auch noch der Von..Bis – Zeitraum in einer nicht gerade Excel-freundlichen Darstellungsweise:
von .. Bis
17.10.2018 – 18.10.2018
18.10.2018 – 21.10.2018
23.10.2018 – 26.10.2018
24.10.2018 – 05.11.2018
9.12.2018 – 23.2.2019
31.12.2018 – 01.1.2019
7.01.2019 – 11.01.2019
15.01.2019 – 20.01.2019
Und dabei sind die viert- und die drittletzte Zeile „gewollte Ausrutscher” in Sachen „Tag” und „Monat”, weil hier im „Von”- als auch im „Bis”-Teil mitunter nur 1 Ziffer, also ohne die führende Null steht. Und in der Musterdatei sind es wegen der Übersichtlichkeit nur 8 aufzubereitende Zeiträume. Das Prinzip ist aber auch so erkennbar. In den Original-Daten werden Sie sofort erkennen, dass weitere Spalten diese kalendarischen Werte ergänzen.
Für die Realisierung dieses Projekts werden Sie erst einmal diese Muster-*.xlsx laden. Anschließend importieren Sie die Tabelle in den Power Query Editor. So weit werden Sie die Vorgehensweise gewiss kennen.
Aus 1 mach 2
Und genau die eben schon angesprochene erste Spalte werden Sie zu Beginn so teilen, dass in den künftig ersten beiden Spalten zwei korrekte kalendarische Daten stehen. Es soll also im Anschluss eine Spalte mit dem jeweils ersten und eine zweite mit dem dazu gehörigen letzten Tag existieren. Damit wird Power Query dann arbeiten. Und natürlich habe ich daran gedacht, auch das eine oder andere Jahr 2‑stellig zu machen. Aber das würde den Bogen dieser Aufgabe gewiss überspannen, auch wenn es in Power Query durchaus machbar ist.
In Plain Excel wären jetzt gewiss einige Klimmzüge erforderlich. Auf jeden Fall einige Schritte mehr, als Sie mit PQ benötigen. Es geht damit los, dass Sie keineswegs erst eine leere Spalte nach dem Datumsbereich erstellen müssen und auch dass links und rechts des Bindestrichs noch Leerzeichen sind ist mit einem einzigen Schritt abzuarbeiten.
Klicken Sie also erst einmal in die Überschrift der Spalte Von..Bis. Dann wählen Sie im Register Start im Menüband das Symbol Spalte teilen. Vermutlich wird PQ Ihnen den Punkt vorschlagen, Sie treffen jedoch die Auswahl Benutzerdefiniert und tragen im neu erschienenen Textfeld direkt darunter – ein, also den von je einem Leerzeichen eingefassten Bindestrich (oder auch das Minuszeichen). Alle anderen Einstellungen belassen Sie so und Klicken auf den OK-Button. Geben Sie im Anschluss den beiden Spalten noch den passenden Namen, also Von und Bis.
Wahrscheinlich wird in den beiden Spalten kein Datum stehen. Und selbst wenn in den einzelnen Zellen ein Wert steht, der wie ein kalendarisches Datum aussieht, so wird Ihnen ein Blick auf den Eintrag Datentyp im Menüband zeigen, dass es sich keineswegs um den Typ Datum handelt. – Auf welchem Wege auch immer, weisen Sie beiden Spalten den korrekten Datentyp zu.
Wechseln Sie nun zum Register Spalte hinzufügen und Klicken Sie in der Gruppe Allgemein auf die Schaltfläche Indexspalte, um eine neue Spalte mit einem null-basierten Index zu erzeugen. Damit sind Sie nun mit der Trennung durch.
Je 1 Zeile erzeugen (lassen)
Das Ziel dieser Operation ist es ja, für jeden Tag des beschriebenen Zeitbereichs eine eigene, einzelne Zeile zu generieren. Also in Zeile 1 steht der 17.10.2018, in Zeile 2 der 18.10.2018 und in Zeile 3 wiederum der 18.10.2018, weil dieses ja der erste Tag eines anderen Events ist. Und natürlich sollen erst einmal die restlichen Zeilen gleichermaßen per Power Query vervielfacht werden.
Sie wechseln erforderlichenfalls zum Register Spalte hinzufügen und wählen dort in der Gruppe Allgemein das Symbol Benutzerdefinierte Spalte. Sie erkennen zu Beginn diesen Dialog:
In diese neue Spalte kommt ausschließlich das kalendarische Datum eines einzigen Tages, darum schreiben Sie idealerweise in das Feld Neuer Spaltenname Datum hinein. Mit Tab oder Mausklick gelangen Sie in das große Textfeld für die Benutzerdefinierte Spaltenformel. Dort tragen Sie nach den vorgegebenen Gleichheitszeichen diese Formel ein:
= List.Dates([Von],
Number.From([Bis])-Number.From([Von])+1,
#duration(1, 0, 0, 0))
Ob Sie das nun mit oder ohne die hier dargestellten Zeilenschaltungen schreiben spielt keine Rolle. Was aber exakt stimmen muss: Die Groß- Kleinschreibung der Funktionsnamen als auch der Überschriften. Die in eckige Klammern eingefassten Feldnamen [Von] und [Bis] können Sie bequem per Doppelklick auf den entsprechenden Eintrag im Kasten Verfügbare Spalten übernehmen. Die Klammern sowie eventuelle andere Formatierungszeichen werden dann automatisch gesetzt. Nach einem OK stellt sich das im Editor so dar:
In der neuen Spalte Datum steht immer der gleiche Wert untereinander: List. Erweitern Sie die Einträge durch einen Klick auf den Doppelpfeil und umgehend werden aus den 8 Zeilen 113. Und die chronologische Reihenfolge stimmt auch auf den ersten Blick. Bei den Zeilen 10 und 11 ist klar erkennbar, dass Petersen Haushaltswaren und die Messe eine zeitliche Überschneidung haben. Wenn die Gruppenbildung das jeweilige Event sein soll, ist das so absolut OK. Hier soll aber eine Liste mit exakter chronologischer Abfolge erstellt werden, wo die Reihenfolge der Veranstaltungen nachrangig beachtet wird.
In Power Query ist die Vorgehensweise in Sachen Sortierung auch anders als in Excel, aus meiner Sicht eingängiger. Priorität hat hier das Datum, also wird auch zuerst nach dem Datum sortiert. Das geht über das Menüband oder im Kontextmenü nach einem Rechtsklick in die Überschrift. Anschließend sortieren Sie nach der ursprünglich eingegebenen Reihenfolge. Also ein Klick auf Projekt?
NEIN! Dann würden ja die Projekte nach ihrem Namen alphabetisch sortiert werden, was ja nicht der Sinn der Sache ist. Aber Sie haben zu Beginn ja die Spalte Index angelegt, und das ist die korrekte Spalte für den zweiten Sortier-Schritt. Natürlich können Sie eine Kopie, ein Duplikat der Abfrage erstellen um dort eine Event-bezogene Sortierung vornehmen.
Die Spalten Von, Bis und Index werden nicht mehr benötigt, darum löschen Sie diese. Die Spalte Datum ist ja auch schön rechtsbündig, also auch ein Datum. Oder? Nein, nicht unbedingt. Power Query hat dieser Spalte eventuell den Datentyp Beliebig zugewiesen. Der Sicherheit wegen und auch im Hinblick auf eventuell weitere erforderliche Schritte weisen Sie dieser Spalte erforderlichenfalls den Datentyp Datum zu. Und wenn Sie nun diese letzte Spalte mit dem Datum an die erste Position verschieben (ziehen oder via Rechtsklick), dann ist das Werk vollbracht. 😎