PQQ: Kalender für einen definierten Zeitbereich (Arbeitstage)

Per Power Query einen Kalender für einen Zeitbereich erstellen.

Was mit Ex­cel prinzip­iell recht ein­fach mög­lich ist, näm­lich durch Aus­füllen ei­nen Kalen­der zu er­stel­len (je Tag eine Zei­le) ist in Pow­er Que­ry eben­falls mög­lich, allerd­ings geht es nicht nur mit eini­gen Maus­klicks son­dern es be­darf ein­er For­mel mit ver­schiede­nen Funk­tio­nen der Spra­che M. Da­für ist es an­schlie­ßend aber auch leich­ter, den An­fangs-und in Endw­ert in der Aus­gangsta­belle anzu­passen und dann mit ei­nem einzi­gen Maus­klick das neue Ergeb­nis zu se­hen.

Je­der Tag ei­nes Zeit­raums

Er­stel­len Sie eine klei­ne Ta­bel­le mit den Über­schriften Start und Ende in den Zel­len A1 und B1. Dar­un­ter tra­gen Sie in Zei­le 2 das Da­tum des 1. bzw. des let­ztens Ta­ges ein. In der Beispiel­d­atei habe ich den 14.2.2016 bzw. den 15.11.2016 als Eck­dat­en ge­wählt. Das Ziel ist, dass für je­den die­ser Tage (ein­schließlich des 29. Feb­ru­ar 2016) eine ein­zel­ne Zei­le ein­er neu zu erstel­len­den Ta­bel­le ge­füllt wird.

Wie im­mer begin­nen Sie da­mit, dass sie die Dat­en als Ta­bel­le for­matieren, beispiel­sweise per StrgL oder StrgT. Ich gebe der Ta­bel­le auch im­mer gle­ich ei­nen „sprechen­den” Na­men, weil die­ser dann auch automa­tisch im Pow­er Que­ry-Edi­tor ver­wen­det wird: Kalen­der:

Ein "sprechender" Tabellen-Name

Ein „sprechen­der” Ta­bel­len-Na­me

Nach dem Im­port wird der Daten­typ der bei­den Fel­der automa­tisch an­ge­passt, wo­bei meis­tens der Daten­typ Da­tum/Uhr­zeit ver­wen­det wird. In der über­wiegen­den An­zahl der Fäl­le ist die­ses kein Prob­lem, höch­stens eine Fra­ge der Op­tik we­gen der automa­tis­chen Er­gän­zung 00:00:00 (Uhr). Hier ist es je­doch aus­nahm­sweise zwin­gend erforder­lich, den Daten­typ auf Da­tum zu än­dern, da eine Funk­tion der einzuset­zen­den For­mel expliz­it ge­nau die­sen Daten­typ ver­langt. Än­dern Sie also bei­de Spal­ten auf den Daten­typ Da­tum.

Die Vor­bere­itun­gen sind ab­ge­schlos­sen. Fü­gen Sie nun eine Be­nut­zer­de­fi­nier­te Spal­te hin­zu. Als Neu­er Spal­tenname kön­nen Sie beispiel­sweise (vor­zugs­wei­se) Tage oder Kalen­der ver­wen­den, als Be­nut­zer­de­fi­nier­te Spal­tenformel tra­gen Sie die­se For­mel ein:
List.Dates([Start], Number.From([Ende])-Number.From([Start])+1, #duration(1,0,0,0))
wo­bei sie die Feld­na­men (Spal­tenüber­schrift) Start und Ende ide­al­er­weise di­rekt aus dem recht­en Kas­ten des Dia­logs per Dop­pelk­lick oder über die Schalt­fläche « Ein­fü­gen über­tra­gen. Pow­er Que­ry er­stellt eine neue Spal­te mit ein­er einzi­gen Zei­le, wel­che den In­halt List hat.:

Die neu erstellte Spalte mit 1 Zeile

Die neu er­stell­te Spal­te mit 1 Zei­le

Wenn Sie an die­ser Stel­le eine Fehler­mel­dung bekom­men, dass ein Wort bzw. Name nicht erkan­nt wur­de, dann liegt das in der Re­gel an ein­er fehler­haften Groß-Klein­schrei­bung oder ei­nem Tipp­feh­ler ihrer­seits. Erweit­ern Sie die­se Spal­te durch ei­nen Klick auf den Dop­pelpfeil Doppelpfeil in der Über­schrift Tage und in ei­nem Drop­Down wäh­len Sie Auf neue Zei­len ausweit­en.

Fer­tig! Eine ra­sche Kon­trolle wird Ih­nen zei­gen, dass automa­tisch der 29. Feb­ru­ar er­zeugt wur­de und auch der Zeit­raum Start/Ende ex­akt be­ach­tet wor­den ist. Ein Recht­sklick in die Über­schrift die­ser Spal­te und sie wäh­len An­de­re Spal­ten ent­fer­nen, denn sie wol­len ja auss­chließlich die Tage des de­fi­nier­ten Zeit­raums als Ta­bel­le aufge­lis­tet ha­ben.

▲ nach oben …

Nur Werk­ta­ge

Die­se Ab­fra­ge Da­tum kön­nen Sie gut als Ba­sis ver­wen­den, um nur die Werk­tage (mit oder ohne Sam­stag) auf­zu­zei­gen. Ich er­stel­le prinzip­iell eine Ko­pie die­ser Ab­fra­ge (per Du­pli­zie­ren), um das Orig­i­nal für weit­ere Exper­i­mente bzw. Auswer­tun­gen zu behal­ten. Fü­gen Sie hier nun eine weit­ere Be­nut­zer­de­fi­nier­te Spal­te hin­zu, die Über­schrift kann beispiel­sweise Werk­tage sein und als For­mel ge­ben Sie in ex­akt die­ser Groß- Klein­schrei­bung ein:
Date.DayOfWeek([Tage], Day.Monday)

Als Ergeb­nis erhal­ten Sie zu je­dem Da­tum ei­nen nu­me­ri­schen Wert zwis­chen 0 und 6. Der Start­wert 0 ist für uns „Nor­mal-User” et­was gewöh­nungs­bedürftig, aber in fast al­len Fäl­len ist Pow­er Que­ry 0‑ba­siert, was die Num­merierung bet­rifft. Und Sie soll­ten Sie auch nicht dazu ver­leit­en las­sen, das in irgen­dein­er Form abzuän­dern. Wenn Sie in ei­nem Kalen­der des Jah­res 2016 nach­se­hen wer­den Sie erken­nen, dass der Mon­tag den Wert 0 und der Son­ntag den Wert 6 zu­ge­wie­sen bekom­men hat.

Je nach An­for­de­rung wer­den sie nun ei­nen Fil­ter set­zen, dass alle Wer­te klein­er 6 (also ein­schließlich Sam­stag) oder klein­er 5 (Mon­tag bis Fre­itag) in der Ta­bel­le erhal­ten blei­ben.

Nur Werktage filtern (Feiertage nicht berücksichtigt)

Nur Werk­tage fil­tern (Fei­er­ta­ge nicht berück­sichtigt)

Auch die­se Hil­f­ss­palte wer­den Sie  nun ver­mut­lich lö­schen, even­tu­ell auch noch die ver­blei­ben­de Über­schrift in Werk­tage oder Arbeit­stage än­dern. Schlie­ßen & la­den und Pow­er Que­ry schreibt Ih­nen (nacheinan­der) in ein neu­es Tabel­len­blatt jew­eils den Kalen­der für alle Tage und die (ge­fil­ter­ten) Arbeit­stage hin­ein. Die­sen Stand der Din­ge kön­nen Sie hier von un­se­rem Serv­er herun­ter­laden.


Vie­le der Le­ser wer­den nun wahrschein­lich den­ken: „Und was ist mit den Feierta­gen?” Ich ver­sichere Ih­nen, auch das ist mit Pow­er Que­ry mög­lich, wenn sie in irgen­dein­er Form für den entsprechen­den Zeit­raum eine Lis­te mit den pas­sen­den Feierta­gen ha­ben. Zu­ge­ge­ben, es ist mit et­was kno­beln oder nach­denken ver­bun­den aber wenn sie et­was Zeit in­ves­tie­ren, wer­den sie mit ho­her Wahrschein­lichkeit zum Ziel gelan­gen. Das Inter­net ist „all­wis­send” und es gibt ei­ni­ge Quel­len im englis­chen Sprach­bere­ich. – Als Alter­na­tive bie­tet sich an, dass sie mir eine E‑Mail mit dem Betr­e­ff „PQ Arbeit­stage ohne Fei­er­ta­ge” sen­den, dann erhal­ten Sie nach ein­er 5 €-Spen­de (auch mit die­sem Ver­merk) die fer­tige Da­tei eben­falls als E‑Mail. Dort ist dann auch noch als klein­er Bon­bon eine Lis­te einge­fügt, wo (natür­lich auch per PQ) die Arbeit­stage des jew­eili­gen Mo­nats berech­net wor­den sind.

▲ nach oben …

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.