Skip to main content

Hallo Community,

wir exportieren Daten über individuelle Berichte aus Personio, um in Excel weitergehende Auswertungen zu erstellen. Die Berichte werden als xlsx gespeichert und nicht weiter bearbeitet. Die Auswertung erfolgt in einer separaten Excel-Datei, die mittels PowerQuery die Daten aus den Personio-Berichten zieht.

 

In den Personio-Berichten sind Zeitdauer-Werte enthalten, in unserem Fall handelt es sich um monatliche Arbeitsstunden.

In der Exportdatei stehen die Daten als Zahlwerte (z.B. 7,08333). Der Screenshot zeigt die Daten als Zahl bzw. Datetime Formatierung.

ursprüngliche Daten aus Bericht

 

Wenn jedoch die Export-Datei geöffnet & gespeichert wurde (es müssen keine Daten verändert werden) wechselt Excel die Formatierung der Daten in der Datei intern auf eine DateTime-Formatierung. In der Exportdatei stehen die Daten nun als DateTime (z.B. 07.01.1900 02:00).

Bericht wurde in Excel überspeichert

PowerQuery hat nun das Problem, dass es nicht zwischen Zahlwerte und DateTime unterscheiden kann. Beim Konvertieren führen die unterschiedlichen Datentypen dazu, dass alle Zeitdauern um 24h zu hoch angegeben werden, wenn die Exportdatei zuvor aus Excel heraus gespeichert wurde.

 

Ist anderen Usern das Problem auch aufgefallen? Wie habt ihr es lösen können? Hinweise wie “bitte die Exportdatei nicht öffnen und speichern” sind zwar gut gemeint, aber führen in der Praxis dennoch zu gravierenden Fehlern.

Habe mittlerweile einen Workaround gefunden. Hier die Lösung für die Nachwelt:

mit folgender Funktion direkt nach dem Import der Daten (bevor PowerQuery den Spalten Datentypen zuweist) die Daten manuell konvertieren.

Die Funktion prüft, ob der Datentyp “datetime” ist. Falls ja, wandele es in number um und subtrahiere 1. Andernfalls handelt es sich um Datentyp “number”.

= Table.ReplaceValue(#"Höher gestufte Header",each eTatsächliches Arbeitsstundensoll],each if Value.Is( Tatsächliches Arbeitsstundensoll], type datetime) then Number.From(nTatsächliches Arbeitsstundensoll])-1 else nTatsächliches Arbeitsstundensoll],Replacer.ReplaceValue,{"Tatsächliches Arbeitsstundensoll"})

 

Mit der Funktion die benötigten Spalten (tats. Arbeitsstundensoll, Arbeitsstunden (bestätigt), ...) nacheinander verarbeiten. Anschließend in Datentyp duration konvertieren.


Hallo zusammen,

 

das gleiche Problem habe ich auch beim normalen Excel Export und habe gerade einen Workaround dafür gefunden:

Ich habe die vertraglichen Arbeitsstunden per Bericht aus Personio exportiert und wollte mit diesen Stunden weiterrechnen. Aus 520:00:00 Stunden (auf 3 Monate) wurde dann in Zahlenformat 21,67…

Lange Rede kurzer Sinn:

Mit dieser Formel und Formatiertung als Zahl lässt sich weiterrechnen:

 

 

Ich hoffe das hilft jemandem :)

 

Liebe Grüße,

Kathi


Deine Antwort