PQ: Multiple kalendarische Daten Von..Bis erzeugen

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ön­ner kein The­ma. 😉 
Auch wenn nur eine einziger Zeit­bere­ich mit Start- bis End­da­tum aus­ge­füllt wer­den soll, ist das mit nor­malen Bor­d­mit­teln des Excel per unter­schiedlich­er Meth­o­d­en prob­lem­los real­isier­bar. Anders sieht das aber aus, wenn so einige kleine Hin­dernisse (auch Gemein­heit­en genan­nt) einge­baut sind und auch nicht nur 1, 2 oder 3 kurze Zeiträume so expandiert wer­den sollen, son­dern reich­lich mehr und dann auch noch der Von..Bis – Zeitraum in ein­er nicht ger­ade Excel-fre­undlichen Darstel­lungsweise:

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 drit­tlet­zte Zeile „gewollte Aus­rutsch­er” in Sachen „Tag” und „Monat”, weil hier im „Von”- als auch im „Bis”-Teil mitunter nur 1 Zif­fer, also ohne die führende Null ste­ht. Und in der Mus­ter­datei sind es wegen der Über­sichtlichkeit nur 8 aufzu­bere­i­t­ende Zeiträume. Das Prinzip ist aber auch so erkennbar. In den Orig­i­nal-Dat­en wer­den Sie sofort erken­nen, dass weit­ere Spal­ten diese kalen­darischen Werte ergänzen.

Für die Real­isierung dieses Pro­jek­ts wer­den Sie erst ein­mal diese Muster-*.xlsx laden. Anschließend importieren Sie die Tabelle in den Pow­er Query Edi­tor. So weit wer­den Sie die Vorge­hensweise gewiss ken­nen.

Aus 1 mach 2

Und genau die eben schon ange­sproch­ene erste Spalte wer­den Sie zu Beginn so teilen, dass in den kün­ftig ersten bei­den Spal­ten zwei kor­rek­te kalen­darische Dat­en ste­hen. Es soll also im Anschluss eine Spalte mit dem jew­eils ersten und eine zweite mit dem dazu gehöri­gen let­zten Tag existieren. Damit wird Pow­er Query dann arbeit­en. Und natür­lich habe ich daran gedacht, auch das eine oder andere Jahr 2‑stellig zu machen. Aber das würde den Bogen dieser Auf­gabe gewiss überspan­nen, auch wenn es in Pow­er Query dur­chaus mach­bar ist.

In Plain Excel wären jet­zt gewiss einige Klim­mzüge erforder­lich. Auf jeden Fall einige Schritte mehr, als Sie mit PQ benöti­gen. Es geht damit los, dass Sie keineswegs erst eine leere Spalte nach dem Datums­bere­ich erstellen müssen und auch dass links und rechts des Binde­strichs noch Leerze­ichen sind ist mit einem einzi­gen Schritt abzuar­beit­en.

Klick­en Sie also erst ein­mal in die Über­schrift der Spalte Von..Bis. Dann wählen Sie im Reg­is­ter Start im Menüband das Sym­bol Spalte teilen. Ver­mut­lich wird PQ Ihnen den Punkt vorschla­gen, Sie tre­f­fen jedoch die Auswahl Benutzerdefiniert und tra­gen im neu erschiene­nen Textfeld direkt darunter   –   ein, also den von je einem Leerze­ichen einge­fassten Binde­strich (oder auch das Minusze­ichen). Alle anderen Ein­stel­lun­gen belassen Sie so und Klick­en auf den OK-But­ton. Geben Sie im Anschluss den bei­den Spal­ten noch den passenden Namen, also Von und Bis.

Wahrschein­lich wird in den bei­den Spal­ten kein Datum ste­hen. Und selb­st wenn in den einzel­nen Zellen ein Wert ste­ht, der wie ein kalen­darisches Datum aussieht, so wird Ihnen ein Blick auf den Ein­trag Daten­typ im Menüband zeigen, dass es sich keineswegs um den Typ Datum han­delt. – Auf welchem Wege auch immer, weisen Sie bei­den Spal­ten den kor­rek­ten Daten­typ zu.

Wech­seln Sie nun zum Reg­is­ter Spalte hinzufü­gen und Klick­en Sie in der Gruppe All­ge­mein auf die Schalt­fläche Indexs­palte, um eine neue Spalte mit einem null-basierten Index zu erzeu­gen. Damit sind Sie nun mit der Tren­nung durch.

Je 1 Zeile erzeugen (lassen)

Das Ziel dieser Oper­a­tion ist es ja, für jeden Tag des beschriebe­nen Zeit­bere­ichs eine eigene, einzelne Zeile zu gener­ieren. Also in Zeile 1 ste­ht 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ür­lich sollen erst ein­mal die restlichen Zeilen gle­icher­maßen per Pow­er Query vervielfacht wer­den.

Sie wech­seln erforder­lichen­falls zum Reg­is­ter Spalte hinzufü­gen und wählen dort in der Gruppe All­ge­mein das Sym­bol Benutzerdefinierte Spalte. Sie erken­nen zu Beginn diesen Dia­log:

Der noch unangepasste Dialog 'Benutzerdefinierte Spalte'

Der noch unangepasste Dia­log ‘Benutzerdefinierte Spalte’

In diese neue Spalte kommt auss­chließlich das kalen­darische Datum eines einzi­gen Tages, darum schreiben Sie ide­al­er­weise in das Feld Neuer Spal­tenname Datum hinein. Mit Tab oder Mausklick gelan­gen Sie in das große Textfeld für die Benutzerdefinierte Spal­tenformel. Dort tra­gen Sie nach den vorgegebe­nen Gle­ich­heit­sze­ichen 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 dargestell­ten Zeilen­schal­tun­gen schreiben spielt keine Rolle. Was aber exakt stim­men muss: Die Groß- Klein­schrei­bung der Funk­tion­sna­men als auch der Über­schriften. Die in eck­ige Klam­mern einge­fassten Feld­na­men [Von] und [Bis] kön­nen Sie bequem per Dop­pelk­lick auf den entsprechen­den Ein­trag im Kas­ten Ver­füg­bare Spal­ten übernehmen. Die Klam­mern sowie eventuelle andere For­matierungsze­ichen wer­den dann automa­tisch geset­zt. Nach einem OK stellt sich das im Edi­tor so dar:

Die neue Spalte enthält derzeit überall den gleichen Wert: "List" (Liste)

Die neue Spalte enthält derzeit über­all den gle­ichen Wert: „List” (Liste)

In der neuen Spalte Datum ste­ht immer der gle­iche Wert untere­inan­der: List. Erweit­ern Sie die Ein­träge durch einen Klick auf den Dop­pelpfeil Doppelpfeil und umge­hend wer­den aus den 8 Zeilen 113. Und die chro­nol­o­gis­che Rei­hen­folge stimmt auch auf den ersten Blick. Bei den Zeilen 10 und 11 ist klar erkennbar, dass Petersen Haushaltswaren und die Messe eine zeitliche Über­schnei­dung haben. Wenn die Grup­pen­bil­dung das jew­eilige Event sein soll, ist das so abso­lut OK. Hier soll aber eine Liste mit exak­ter chro­nol­o­gis­ch­er Abfolge erstellt wer­den, wo die Rei­hen­folge der Ver­anstal­tun­gen nachrangig beachtet wird.

In Pow­er Query ist die Vorge­hensweise in Sachen Sortierung auch anders als in Excel, aus mein­er Sicht eingängiger. Pri­or­ität hat hier das Datum, also wird auch zuerst nach dem Datum sortiert. Das geht über das Menüband oder im Kon­textmenü nach einem Recht­sklick in die Über­schrift. Anschließend sortieren Sie nach der ursprünglich eingegebe­nen Rei­hen­folge. Also ein Klick auf Pro­jekt?

NEIN! Dann wür­den ja die Pro­jek­te nach ihrem Namen alpha­betisch sortiert wer­den, was ja nicht der Sinn der Sache ist. Aber Sie haben zu Beginn ja die Spalte Index angelegt, und das ist die kor­rek­te Spalte für den zweit­en Sorti­er-Schritt. Natür­lich kön­nen Sie eine Kopie, ein Dup­likat der Abfrage erstellen um dort eine Event-bezo­gene Sortierung vornehmen.

Die Spal­ten Von, Bis und Index wer­den nicht mehr benötigt, darum löschen Sie diese. Die Spalte Datum ist ja auch schön rechts­bündig, also auch ein Datum. Oder? Nein, nicht unbe­d­ingt.  Pow­er Query hat dieser Spalte eventuell den Daten­typ Beliebig zugewiesen. Der Sicher­heit wegen und auch im Hin­blick auf eventuell weit­ere erforder­liche Schritte weisen Sie dieser Spalte erforder­lichen­falls den Daten­typ Datum zu. Und wenn Sie nun diese let­zte Spalte mit dem Datum an die erste Posi­tion ver­schieben (ziehen oder via Recht­sklick), dann ist das Werk voll­bracht.  😎 

▲ nach oben …

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

Dann würde ich mich über einen Beitrag Ihrer­seits freuen …

Dieser Beitrag wurde unter Datum & Zeit, Datum und Zeit, Ohne Makro/VBA, Power Query, PQ-Formeln (Sprache M), Spalten bearbeiten abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.