PQ: Anwesenheits-Tage multipel berechnen (2)

Xtract: Zweit­er Teil ein­er in einem Forum gestell­ten Frage, wie Anwe­sen­heits-Tage von Mitar­beit­ern auf Monate zuge­ord­net wer­den kön­nen. PQ- und Piv­ot­Ta­bele wer­den einge­set­zt.

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

Nacharbeiten und Korrekturen

Der erste Teil endete ja damit, dass Sie die 100.00 € – Frage beant­worten soll­ten: „Was war an der Auswer­tung for­mal zwar richtig, entsprach aber nicht den eigentlichen Zie­len?” Falls Sie es noch nicht erkan­nt hat­ten, auf diese Lösung warteten oder Sie sich nicht sich­er sind, gehen Sie mit mir „back to the roots”, also pack­en wir das Prob­lem gemein­sam an der Wurzel. 😉 Okay, hier kön­nen Sie (noch ein­mal) meinen Stand der Dinge herun­ter­laden. Die fol­gen­den Aus­führun­gen ori­en­tieren sich an dieser Datei. … Und falls bei Ihnen das rechte Seit­en­fen­ster nicht sicht­bar ist, schauen Sie doch ein­fach ein­mal hier nach! – Und noch ein­mal der Hin­weis, dass Sie bitte die Quell­dat­en nicht ändern, außer ich fordere Sie dazu auf!

Öff­nen Sie erst ein­mal in dieser Arbeitsmappe im Pow­er Query-Edi­tor die entschei­dende, aus­sagekräftige Abfrage Tabelle1. Klick­en Sie im recht­en Seit­en­fen­ster auf die erste Zeile bei Angewen­dete Schritte, also auf Quelle. Sie erken­nen den Stand des Ablaufs direkt nach dem Import der Dat­en in den Pow­er Query-Edi­tor. Klick­en Sie in die dritte Zeile darunter (Geän­dert­er Typ1), dann haben Sie bei den kalen­darischen Dat­en eine bessere Darstel­lung, eine bessere Les­barkeit, weil nun nur das Datum ohne die Uhrzeit in den bei­den Spal­ten ste­ht; also welch­er der Mitar­beit­er von wann bis wann anwe­send (gewe­sen) ist bzw. sein wird.

Und (beispiel­sweise) im Jan­u­ar gibt es eine beson­dere „Über­schnei­dung”, denn Lisa Muster­frau ist im Jan­u­ar 2023 anwe­send, ein Mitar­beit­er der Fir­ma Just4Fun eben­falls im Jan­u­ar, aber nicht im Jahr 2023 son­dern 2024! Und da bis­lang nur der Monat­sname ohne Beach­tung des Jahres als Argu­ment für die Auswer­tung ver­wen­det wurde, wer­den später bei Grup­pierte Zeilen die Tage der Monate ohne jegliche Dif­feren­zierung des Jahres gezählt; hier sind es fol­glich die Monate Jan­u­ar bis April, welche in bei­den Jahren vertreten sind und somit zu uner­wün­scht­en, zu logisch falschen Ergeb­nis­sen führen.

Wie lässt sich das lösen? Prinzip­iell bieten sich zwei Lösungswege an, jew­eils nach dem Auflis­ten der einzel­nen Tage (also direkt nach dem Schritt Erweit­erte Ein­satz­tage, dieser Ein­trag ist aber noch markiert):

A) Sie fil­tern in der Spalte Ein­satz­tage alle kalen­darischen Dat­en, die außer­halb des zu betra­ch­t­en­den Zeitraums liegen als nicht mehr zu betra­cht­en, Sie löschen also die Daten­sätze aus dem Jahr 2024. Das würde der wahrschein­lichen Zielset­zung des Fragestellers entsprechen. Und das ist auch mein Favorit.

B) Sie sor­gen dafür, dass nicht nur der Monat aus dem jew­eili­gen Tages­da­tum extrahiert wird, son­dern auch das Jahr. Das kön­nen dann 2 Spal­ten sein oder auch (vorzugsweise) nur eine. Bei ein­er 2‑spaltigen Auswer­tung, wo anschließend auch alle Dat­en aus­gew­ertet wer­den sollen, bietet es sich an, die bei­den Spal­ten Monat und Jahr zu 1 Spalte zusam­men­zuführen und danach entsprechend zu benen­nen. Direkt kom­men Sie übri­gens auch sehr schön per M-Funk­tion Date.ToText zum einspalti­gen Ergeb­nis; ein­fach ein­mal in der Hil­fe nach­se­hen. 😉 Der weit­ere Weg ist bei den genan­nten Möglichkeit­en prinzip­iell genau so, wie im ersten Beitrag beschrieben und aus­ge­führt. Bei zweis­paltigem Monat und Jahr sind eventuell kleinere Anpas­sun­gen erforder­lich.

Der Weg zur Kreuztabelle

Als Basis für diesen Schritt ver­wende ich die für das Jahr 2023 gefilterte Abfrage und nicht die gesamten Dat­en ein­schließlich des Jahres 2024. Den Fil­ter-Vor­gang füge ich in der Query Tabellke1 direkt nach Erweit­erte Ein­satz­tage und vor Name des Monats extrahiert ein. Die Spalte Ein­satz­tage habe ich über Datums­fil­ter | Zwis­chen… anschließend so gefiltert:

So fil­tern Sie (beispiel­sweise) die kalen­darischen Dat­en aus 2023

Nach einen OK sind dann nicht mehr 345 Zeilen in der Abfrage, son­dern nur noch 202. Und natür­lich alle aus dem Jahr 2023. Das passt also schon ein­mal. Wenn Sie nun auf den let­zten Schritt im recht­en Seit­en­fen­ster Klick­en, stim­men zwar die berech­neten Werte für jeden Mitar­beit­er aber die Darstel­lung ist nicht wie gewün­scht. Die Monate sind nicht in der kalen­darischen Rei­hen­folge, es fehlen die Monate ohne Ein­trag und es ist auch keine Kreuzta­belle.

Na gut, wie heißt es doch so schön in einem Werbe-Slo­gan der 50er bis 60er Jahre des let­zten Jahrhun­derts für einen Wein­brand: „Stück für Stück kommt man sich näher”. 😉

Den ersten Schritt ken­nen Sie nicht nur aus dem ersten Teil, die Abfrage Monat­sna­men existiert ja schon bzw. noch! Und wenn Sie wer­den nun diese Query öff­nen wer­den Sie rasch erken­nen, dass in der Tat auch hier jet­zt nur noch die Dat­en aus 2023 berück­sichtigt wor­den sind. Die Fir­ma Just4Fun ist auss­chließlich im Novem­ber und Dezem­ber aufge­führt und nicht (mehr) im Jan­u­ar bis Mai. Und die näch­sten Schritte wer­den auch in dieser Abfrage durchge­führt.

Löschen Sie als erstes die Spal­ten Index und Ein­satz­monate, die wer­den nicht mehr benötigt. Danach markieren Sie die Spalte Column1 und benen­nen diese zu Monate um. Mein Tipp an dieser Stelle: Erstellen Sie jet­zt beispiel­sweise über Start | Ver­wal­ten | Duplizieren oder per Recht­sklick im linken Seit­en­fen­ster auf die aktuelle Abfrage ein Dup­likat, welch­es dann automa­tisch den Namen Monat­sna­men (2) bekommt.

Zurück zu der eben bear­beit­eten Abfrage Monat­sna­men, Markieren die zuerst Spalte Monate, wech­seln dann zum Menü-Reg­is­ter Trans­formieren und in der Gruppe Beliebige Spalte wählen Sie Spalte Piv­otieren. Im Dia­log wählen Sie bei Wertspalte den Ein­trag Anzahl Tage, um diese Werte den (kün­fti­gen) jew­eili­gen Monats-Spal­ten zuzuord­nen. OK und das Ergeb­nis entspricht nun fast dem gewün­scht­en Endergeb­nis.

Dass die Zeile 1 leer ist, irri­tiert mich und ich kann dafür derzeit keine schlüs­sige Erk­lärung find­en. Soll­ten Sie da einen nachvol­lziehbaren Hin­weis haben, bitte Mail an mich! So bleibt nur der in solchen Fällen sin­nvoll­ste Weg, alle leeren Zeilen zu ent­fer­nen (auch wenn es nur eine ist). 😉


Die näch­ste Auf­gabe ist erst ein­mal die Berech­nung der Sum­men für die einzel­nen Mitar­beit­er. Markieren Sie dazu die Spal­ten Jan­u­ar bis Dezem­ber, Spalte hinzufü­gen | Sta­tis­tiken | Summe und PQ berech­net für jeden Daten­satz die Summe der Tage aller Monate (sprich: der markierten Spal­ten). Wenn Sie mögen, benen­nen Sie die Spalte noch nach Ihrem Geschmack; ich ziehe Tage gesamt vor.

An dieser Stelle in Pow­er Query die Sum­men für die einzel­nen Monate unter­halb des let­zten Daten­satzes einzufü­gen wäre aus mein­er Sicht viel zu aufwendig. Das geht mein­er Mei­n­ung nach anders viel bess­er. Schließen Sie dazu den Pow­er Query-Edi­tor und behal­ten (natür­lich) die Änderun­gen bei. Und ach ja, ich nutze die Gele­gen­heit, diesen Stand der Dinge jet­zt unter einem anderen Namen als Excel-Datei per F12 zu spe­ich­ern. Danach im recht­en Seit­en­fen­ster ein Recht­sklick auf die Abfrage Monat­sna­men und Laden in… Wählen Sie im Dialogfen­ster Tabelle und anschließend entwed­er Neues Arbeits­blatt oder Beste­hen­des Arbeits­blatt, um das Ergeb­nis, die Kreuzta­belle an gewün­schter Stelle zu posi­tion­ieren.

Bleiben ja noch die eben ange­sproch­enen Sum­men der einzel­nen Monate. Dazu Klick­en Sie (im Excel-Arbeits­blatt) mit der recht­en Maus­taste irgend­wo in den Daten­bere­ich der eben erstell­ten „intel­li­gen­ten” Tabelle, Tabelle | Ergeb­niszeile und es wird eine neue Zeile mit dem Gesamtergeb­nis in der let­zten Spalte angelegt. Ziehen Sie das Feld bis zum Jan­u­ar nach links und das Wun­schergeb­nis ist gegeben. Mit dem Zahlen­for­mat 0;0;; kön­nen Sie erre­ichen, dass in der Ergeb­niszeile die Monate ohne einen Ein­trag leer erscheinen (also keine 0 sicht­bar ist). Und ich for­matiere den Daten­bere­ich auch noch kom­plett auf hor­i­zon­tal zen­tri­erte Darstel­lung, das sieht dann auch über­sichtlich­er aus.

Es gibt aber auch noch eine echte Alter­na­tive für die Darstel­lung in der gewün­scht­en Form. Und da ist das Stich­wort „Piv­ot­Table”. Um das auszupro­bieren schlage ich vor, dass Sie die Abfrage Monat­sna­men (2) öff­nen. Kurz noch ein­mal check­en und über­legen, wie sich die einzel­nen Daten­sätze darstellen sollen. Wenn Sie oft mit Piv­ot Tabellen arbeit­en wis­sen Sie gewiss, was ich meine.

Ich beginne mit diesem Stand der Dinge als Daten­quelle. Aber da auch diese Abfrage als Nur Verbindung gesichert ist, wer­den Sie jet­zt die Abfrage schließen und falls Änderun­gen vorgenom­men wor­den sind nicht spe­ich­ern, um die näch­sten Schritte bess­er 1:1 nachvol­lziehen zu kön­nen.

Im recht­en Seit­en­fen­ster ein Recht­sklick auf Monat­sna­men (2), Laden in… | Piv­ot­Table-Bericht und entwed­er als Neues Arbeits­blatt oder bei Beste­hen­des Arbeits­blatt die gewün­schte Posi­tion wählen. Danach OK. Grund-Ken­nt­nisse in Piv­ot Tabel­lenar­beit set­ze ich voraus, anson­sten ein­fach ein­mal diesen Mini-Kurs anschauen.

Zuerst ziehen Sie das Feld Monate in den Kas­ten (Bere­ich) Spal­ten. Name und Vor­name ziehen Sie in den Bere­ich Zeilen und let­z­tendlich noch Anzahl Tage in Werte.

Na ja… Erst ein­mal wieder die leere Zeile (ganz unten), warum auch immer. 🙁 Aber die kann ja via Fil­ter bei Zeilenbeschrif­tun­gen gelöscht wer­den. Und dann stört mich, dass jed­er Name zweizeilig ist und die Werte auch dop­pelt aufge­führt sind. Na ja, zumin­d­est sind die kor­rek­ten Sum­men automa­tisch und auch kor­rekt berech­net wor­den. Nun ja, und nach dem fil­tern der Leer-Werten sieht das dann so aus, wenn Sie die Piv­ot Tabelle in einem neuen Arbeits­blatt gespe­ichert haben:

Die (erste) Piv­ot Tabelle nach der Fil­terung der leeren Zeilen

Wech­seln Sie nun erst ein­mal wieder zum Pow­er Query-Edi­tor. Dazu Klick­en Sie im Bere­ich rechts vom recht­en Seit­en­fen­ster oben auf jenes Sym­bol, das derzeit nicht markiert ist:

Klick­en Sie hier zum Wech­sel Piv­ot zu Pow­er Query

Es erscheint dann wieder das gewohnte Seit­en­fen­ster für Abfra­gen und Verbindun­gen. Und bei der Gele­gen­heit ist mir (endlich) aufge­fall­en, dass sich bei der Fir­ma Just4Fun ein Tippfehler eingeschlichen hat. Es ist natür­lich eine GmbH (statt GnbH). Also Wech­sel zum Tabel­len­blatt Tabelle1 und in Zelle B5 den Fehler kor­rigieren. Dass sich in der PQ-Ergeb­nista­belle erst ein­mal nichts tut, ist nor­mal und auch gewollt; stellen Sie sich ein­fach ein­mal vor, dass Sie eine Verbindung zu ein­er ester­nen Daten­quelle aufge­baut haben und ein Kol­lege oder Kol­le­gin ändert einen Wert. Was wür­den Sie sagen, wenn sich dann ohne Ihr Zutun plözulich Ihre PQ-Abfrage ändert? 🙁 Aber nach einem Recht­sklick in eines der Felder der Ergeb­nista­belle und im Kon­textmenü Aktu­al­isieren hat sich der hier erwün­schte Erfolg eingestellt. 🙂

Für eine andere, gewohn­tere und vielle­icht auch trans­par­entere Darstel­lung in der Piv­ot Tabelle ändern Sie die Abfrage Monat­sna­men (2). Name und Vor­name sollen zu einem (1) Feld, zuu 1 Spalte zusam­menge­fasst wer­den. Es stellt sich jet­zt die Frage, ob dort dann Lisa Muster­frau oder Muster­frau, Lisa ste­hen soll. Im erst­ge­nan­nten Fall markieren Sie zuerst die Spalte Vor­name und dann Strg Name. Recht­sklick in eine der bei­den markierten Über­schriften und Spal­ten zusam­men­führen. Als Trennze­ichen wählen Sie Leerze­ichen. Das Ergeb­nis irri­tiert wahrschein­lich, denn die Rei­hen­folge stimmt nicht. 🙁 Kann auch nicht stim­men, denn beim genauen Hin­se­hen ist mir klar gewor­den, dass die Über­schriften nicht zu den Inhal­ten der bei­den Spal­ten passen. Also abän­dern…

Ide­al­er­weise markieren Sie bei den Schrit­ten die Zeile Umbe­nan­nte Spal­ten und los geht’s. Wenn Sie aber ver­suchen, die Spalte Name auf Vor­name zu ändern, wird Pow­er Query das nicht akzep­tieren. Es kön­nen in ein­er Query (exakt: in ein­er Liste/Tabelle) nicht zwei gle­iche Über­schriften existieren. Also beispiel­sweise Name erst ein­mal auf Vor­name. (mit Punkt) ändern, dann Vor­name auf Name und anschließend den Punkt bei Vor­name ent­fer­nen.

Wenn Sie dann wieder auf die let­zte Zeile der Schritte wech­seln, sieht das sehr gut aus. – Soll­ten Sie die Anord­nung Muster­frau, Lisa vorziehen, dann markieren Sie die bei­den Spal­ten in der (nun mit kor­rek­ten Über­schriften verse­henen) gewün­scht­en Rei­hen­folge,  Recht­sklick in eine der Über­schriften, Spal­ten zusam­men­führen und wählen bei Trennze­ichen die Zeile Benutzerdefiniert und tra­gen dann in das Textfeld ein Kom­ma, gefol­gt von einem Leerze­ichen ein. Geben Sie der neuen, zusam­menge­fassten Spalte bei Bedarf noch einen sin­nvollen Namen, beispiel­sweise Name oder Name, Vor­name. Und ja, das hät­ten Sie natür­lich auch schon beim Zusam­men­fü­gen tun kön­nen. 😉

Schließen Sie den PQ-Edi­tor und spe­ich­ern dabei (natür­lich) die Änderun­gen. Wech­seln Sie wieder zur Piv­ot­Table-Ansicht durch einen Klick auf das entsprechende Sym­bol ganz rechts beim Seit­en­fen­ster und ziehen Sie noch das (neue) Feld (beispiel­sweise Name) in den Bere­ich Zeilen. Vielle­icht noch ein­mal den Fil­ter bei Zeilenbeschrif­tun­gen set­zen, damit die Leerzeile (oben) gelöscht wird und das Ergeb­nis lässt sich wirk­lich sehen! Einige „kos­metis­che” Kor­rek­turen wer­den das Ausse­hen gewiss noch ver­schön­ern:

Eine aus mein­er Sicht wirk­lich gelun­gene Piv­ot Tabelle

▲ nach oben …

Es bleibt gewiss noch die Frage, warum ich meine Arbeit vor dem Wech­sel zur ersten Piv­ot Tabel­len­er­stel­lung per F12 unter einem anderen Namen gespe­ichert habe. Nun ja, meine langjährige Erfahrung in Sachen „Beschre­it­en neuer Wege” hat mir gezeigt, dass doch manch­mal etwas schief gehen kann. Und so habe ich einen definierten Stand, wo ich im Falle eines Fall­es wieder ein­steigen kann; oder aber ich möchte vielle­icht auch andere Wege erforschen, die vielle­icht für mich bess­er nachvol­lziehbar sind oder ich möchte ein­fach nur herumpro­bieren… Und ja, wenn ich gle­ich zu Beginn mit meinem Werk zufrieden bin, dann lösche ich die Zwis­chen­sicherung natür­lich.

Und noch eins: Meine Lösung gibt es auf Anfrage per E‑Mail an Sie.

▲ nach oben …

Rück­mel­dun­gen / Feed­back gerne per Mail an mich (G.Mumme@Excel-ist-sexy.de)

Haben Ihnen die beiden Beiträge gefallen?
Erleichtert diese Beiträge Ihre Arbeit?

Dann würde ich mich über einen Beitrag Ihrer­seits z.B. 5,00  freuen … (← Klick mich!)

Dieser Beitrag wurde unter Datum & Zeit, Datum und Zeit, Filtern & Sortieren, Foren-Q&A, Ohne Makro/VBA, Power Query, PQ-Formeln (Sprache M), Rechnen & Zahlen, Rechnen / Berechnungen, Spalten bearbeiten, Transponieren abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.