$ PQ: Fertigungsdauer in Werktagen (Spezial), Kurzform

Xtract: Lösung ein­er Anfrage aus einem Forum. Für mehrere Pro­duk­te sollen die jew­eili­gen Wek­tage (unter berück­sich­ti­gung der Feiertage) mit PQ berech­net wer­den. Dieser Beitrag ist eine Kurz­form mit knap­pen bis keinen Erk­lärun­gen des Weges zum Ziel.

  Wis­sens­stand: Lev­el 3 ⇒  Excel GUT!, min­destens Basis-Ken­nt­nisse in Pow­er Query   

Anzahl der Werktage für die Fertigung eines Produkts
(Kurzform: Andere Darstellungsweise als gewünscht)

In ei­nen ei­nem Fo­rum wur­de die Fra­ge aufge­wor­fen, wie die Ver­ar­beitungszeit in Ta­gen ver­schieden­er Pro­jek­te war. Je­des das Pro­jekt ist an eine ein­deutige ID gebun­den. Als Beson­der­heit kommt noch hin­zu, dass zwis­chen dem ers­ten und dem let­zten Tag ver­schiedene weit­ere Ein­träge (beispiel­sweise für ent­nommene Stich­proben) ge­macht wor­den sind. Als weit­ere Beson­der­heit gilt, dass nur die Werk­tage Mon­tag bis Fre­itag ge­zählt wer­den sol­len. Außer­dem sol­len auch noch de­fi­nier­te Fei­er­ta­ge als arbeits­frei berück­sichtigt wer­den.

Ich habe die Musterta­belle aus dem Fo­rum herun­terge­laden und stel­le Ih­nen die­se (leicht mod­i­fiziert) hier zum Down­load zur Ver­fü­gung. Auch wenn es seit­ens des Fra­ge­stel­lers (bis­lang) nicht erwäh­nt wor­den ist gehe ich da­von aus, dass die berech­neten Arbeit­stage wie auch in Spal­te C stets in die let­zte Zei­le des jew­eili­gen Pro­jek­ts einge­tra­gen wer­den sol­len.

In die­sem frei ver­füg­baren Bei­trag gibt es zwei Ein­schränkun­gen; eine ge­gen­über der durch den Fra­ge­stel­ler gewün­scht­en Darstel­lungs­form (let­ze Zei­le des Pro­jek­ts) und eine in der son­st üb­li­chen Form der Aus­führlichkeit der Bei­trä­ge die­ses Blogs. Mehr dazu kön­nen Sie weit­er un­ten oder in die­sem Hin­weis (Pass­wort: Hil­fe) nach­le­sen.

▲ nach oben …

Ein­stieg

Zu Be­ginn im­por­tie­ren Sie nun die Dat­en der Spal­ten A:B in den Pow­er Que­ry-Edi­tor. Ich habe für Sie die For­matierung als Intel­li­gente Ta­bel­le bere­its vorgenom­men und den Na­men der Ta­bel­le auf Data an­ge­passt. Ide­al­er­weise wer­den sie so­fort nach dem Im­port Schlie­ßen & la­den in… aus­zu­wäh­len und die Aus­wahl Nur Ver­bin­dung er­stel­len tre­f­fen. Na­tur­ge­mäß befind­et sie sich da­nach wie­der im Arbeits­blatt Ta­bel­le1. Im Bere­ich D1:E13 sind die kalen­darischen Dat­en der Fei­er­ta­ge für die Jah­re 2019 und 2020 aufge­führt. Auch die­sen Bere­ich habe ich ent­spre­chend for­matiert und der Lis­te den Na­men Fei­er­ta­ge ge­ge­ben. Im­por­tie­ren Sie auch die­se Ta­bel­le nach Pow­er Que­ry.

Wo sie schon ein­mal in der Ab­fra­ge Fei­er­ta­ge sind kön­nen Sie auch gle­ich da­mit begin­nen, die kalen­darischen Dat­en so zu posi­tion­ieren, dass die­se nur in ein­er Spal­te untere­inan­der ange­ord­net sind. Eine der Möglichkeit­en wäre, eine An­fü­ge-Ab­fra­ge zu star­ten. Ich gehe mit Ih­nen ei­nen an­de­ren Weg und mar­kie­re bei­de Spal­ten, Recht­sklick in ein­er der bei­den Über­schriften und im Kon­textmenü ein Klick auf Ent­piv­otieren. Auch wenn die chro­nol­o­gis­che Rei­hen­folge nicht sor­tiert ist kann das so blei­ben. Lö­schen Sie die Spal­te Attrib­ut und benen­nen Sie die üb­rig ge­blie­be­ne Spal­te Fei­er­ta­ge. Nun auch hier die kalen­darischen Dat­en in den Daten­typ:  Da­tum umwan­deln und da­nach die­se Ab­fra­ge per Schlie­ßen & la­den in… als Nur Ver­bin­dung spe­ich­ern.

▲ nach oben …

Ers­ten und letz­ten Tag je Pro­jekt fest­stel­len

Im weit­eren Ab­lauf geht es dar­um, den ers­ten und den let­zten Tag je­des Pro­jek­ts fest­zu­stel­len und in die Ab­fra­ge einzu­tra­gen. Der hier auf­ge­zeig­te Weg ist (der Kurz-Ver­sion we­gen) ohne weit­ere Erk­lärung; ein­fach nur nachar­beit­en und zum Ziel gelan­gen. In der $$-Ver­sion die­ses The­mas wird ein et­was ander­er, ge­wiss bess­er ver­ständlich­er Weg gegan­gen und auch ent­spre­chend aus­führlich doku­men­tiert.

Öff­nen Sie die Ab­fra­ge Data auf be­lie­bi­ge Wei­se. Mar­kie­ren Sie nun die Spal­te mit der ei­gent­li­chen ID Doku­ment No und wäh­len Sie nach ei­nem Recht­sklick in die­se Über­schrift Grup­pieren nach… Im Dia­log kön­nen Sie Neu­er Spal­tenname bei An­zahl be­las­sen, ich zie­he als kün­ftige Über­schrift Dat­en vor. Bei Vor­gang wäh­len Sie die unter­ste Zei­le Alle Zei­len und da­nach OK. Das Ergeb­nis ist eine 2‑spal­ti­ge, 6 Zei­len um­fas­sen­de Ab­fra­ge, wo in der zweit­en Spal­te (Dat­en) auss­chließlich der Wert Ta­ble einge­tra­gen wor­den ist.

Im Menü Spal­te hinzufü­gen ein Klick auf Be­nut­zer­de­fi­nier­te Spal­te und tra­gen Sie im Dia­log bei Neu­er Spal­tenname den Wert Start ein und bei Be­nut­zer­de­fi­nier­te Spal­tenformel schrei­ben Sie die­se For­mel:
Table.Min([Daten],"Datum")

… und das Ergeb­nis ist eine weit­ere Spal­te Start mit dem durchgängi­gen Wert Re­cord. Wieder­holen Sie die­sen Vor­gang mit fast der gle­ichen For­mel, nur dass sie statt Ta­ble.Min die Funk­tion Table.Max ver­wen­den und als Über­schrift natür­lich Ende ein­set­zen. Erweit­ern Sie nun die bei­den Spal­ten Start und Ende der­ar­tig, dass nur der Wert aus der Zei­le Da­tum aus­gegeben wird, an­schlie­ßend lö­schen Sie die Spal­te Dat­en und än­dern Sie die Über­schriften Da­tum (wie­der) in Start, Da­tum.1 ent­spre­chend in Ende.

Än­dern Sie den Daten­typ der bei­den Spal­ten Start und Ende auf Gan­ze Zahl. Das ist die bes­te Voraus­set­zung um für je­den Tag des Zeit­bere­ichs eine ein­zel­ne Zei­le zu gener­ieren. Im­mer noch im Menü Spal­te hinzufü­gen leg­en Sie eine Be­nut­zer­de­fi­nier­te Spal­te mit dem Spal­tenna­men Da­tum und der Spal­tenformel
= {[Start]..[Ende]}
an. Lö­schen Sie die bei­den Spal­ten Start und Ende und erweit­ern Sie Da­tum. Än­dern Sie den Daten­typ die­ser Spal­te nun wie­der auf Da­tum.

Im Men­üband Da­tum | Tag | Name des Tags und Pow­er Que­ry fügt eine Spal­te mit dem lan­desüblichen Na­men des Wochen­t­ages ein. Fil­tern Sie die­se Spal­te so, dass Sam­stag und Son­ntag ent­fer­nt wer­den. Wech­seln Sie zum Menü Start und ein Klick auf Abfra­gen zusam­men­führen. Wäh­len Sie als un­te­re Ab­fra­ge Fei­er­ta­ge und mar­kie­ren Sie die bei­den Spal­ten mit den kalen­darischen Dat­en. Bei Join-Art wäh­len Sie den Lin­ken An­ti-Join und nach ei­nem OK kön­nen Sie mit Aus­nahme der Spal­te Doc­u­ment No alle an­de­ren Spal­ten lö­schen.

▲ nach oben …

End­spurt

Nun ein Recht­sklick in die ein­zig ver­blie­be­ne Über­schrift und wäh­len Sie Grup­pieren nach… Über­neh­men Sie die Vor­gaben und Pow­er Que­ry hat das gewün­schte Ergeb­nis berech­net. Für jede ID wur­de die kor­rek­te An­zahl von Arbeit­sta­gen berech­net. Nach ei­nem Klick auf Schlie­ßen & la­den wer­den sie das Ergeb­nis na­tur­ge­mäß noch nicht in ih­rem Arbeits­blatt se­hen. Aber über die­sen Weg plat­zie­ren sie die Ergeb­nis-Ta­bel­le an gewün­schter Posi­tion.

Zu­ge­ge­ben, das war ein teil­weise an­spruchs­vol­ler Schnell­durch­gang, der nicht in üblich­er Form kom­men­tiert ist. Wie oben schon erwäh­nt gibt es aber ei­nen Blog-Bei­trag zu ge­nau die­sem The­ma und mit ex­akt die­sen Dat­en, wo zwar teil­weise ein et­was ander­er Weg beschrit­ten wird aber die Vorge­hensweise für „Nor­mal-User” ge­wiss bess­er nachvol­lziehbar und auch in gewohn­ter Form aus­führlich be­schrie­ben ist. – Hier ein Hin­weis dazu, das erforder­liche Pass­wort ist Hil­fe.

▲ nach oben …

Ein wichtiger Hin­weis
Der Link auf den Folge-Beitrag begin­nt mit „$$”. Das bedeutet für alle der­ar­tig aus­geze­ich­neten Beiträge, dass diese kostenpflichtig sind (eine geringe Spende).
Näheres dazu in der ange­sproch­enen Mail. Auch Wis­sen hat einen Wert!

Wie eben schon dar­ge­legt habe ich auch eine aus­führliche Beschrei­bung mei­nes Lö­sungs­we­ges in bekan­nter, aus­führlich­er Form er­stellt. Eine E‑Mail an mich mit dem Stich­wort/Be­treff $$ Fer­ti­gungs­dauer in Werk­ta­gen und Sie bekom­men von mir den entsprechen­den Link so­wie das erforder­liche Pass­wort zum öff­nen des Bei­tra­ges, so­fern Sie mir eine eine Spen­de von 5,00€ (Über­weisung, Donate-But­ton, Pay­Pal Fre­und­schaft oder Ama­zon-Gutschein) ha­ben zukom­men las­sen.

Dieser Beitrag wurde unter Datentyp anpassen, Datum & Zeit, Entpivotieren, Filtern & Sortieren, Foren-Q&A, Join-Art, Power Query, PQ-Formeln (Sprache M), Spende/Donation, {Liste} abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.