Alexa, skip auf Freitag!

Gestern auf dem Excelstammtisch. Angelika (Angelika Meyer; https://www.asmeyer.de/) will es wissen:

Sie hat eine Liste mit Namen und Geburtstagsdaten. Diese werden in Power Query abgerufen:

Sie möchte das Alter berechnen und dann in einer Pivottabelle gruppieren, um einen Überblick über die Altersstruktur zu erhalten.

Es erstaunt:

  • Excel stellt die Funktion DATEDIF zur Verfügung
  • VBA stellt die Funktion DateDiff zur Verfügung
  • DAX stellt die Funktion DATEDIFF zur Verfügung

Und Power Query? Nichts dergleichen. Also per Hand:

Über Spalte hinzufügen / Datum / Alter kann man eine berechnete Altersspalte erzeugen. Wirklich?

Das Ergebnis ist eine Dauer – genauer: die Differenz in Tagen zwischen dem aktuellen Datum und dem Geburtsdatum (hier: Spalte „Birthday“)

Im zweiten Schritt kann man über Transformieren / Dauer / Jahre gesamt diese Spalte in eine Jahreszahl verwandeln:

Das Ergebnis: Dezimalzahlen

Diese müssen abgerundet werden – hier hilft Transformieren / Runden / Abrunden:

Aber ist das Ergebnis korrekt? Ich stutze. Wir probieren es. Heute ist der 10. September. Ich trage einige Geburtsdaten ein – vom 01.09 bis zum 30.09:

Bis zum 25. September sind diese Personen 60 Jahre als. Das ist falsch. Warum?

Ein Blick in den Code hilft. Power Query berechnet das Alter:

= Table.TransformColumns(#"Eingefügtes Alter",{{"Alter", each Duration.TotalDays(_) / 365, type number}})

Power Query teilt die Dauer durch 365. Dadurch werden Schaltjahre nicht berücksichtigt. Bei einem 60jährigen macht dies eine Differenz von 60/4 = 15 Tage aus. Wir versuchen den Code anzupassen:

= Table.TransformColumns(#"Eingefügtes Alter",{{"Alter", each Duration.TotalDays(_) / 365.25, type number}})

Wir teilen durch 365.25

Das Ergebnis ist besser:

Oder man muss eine eigene Funktion für dieses Problem erstellen.

Danke an Angelika für diese gute Frage.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.