Xtract: Mittels einer UDF (UserDefinedFunction, benutzerdefinierten Funktion) eine Liste aller Tage des gegebenen kalendarischen Bereichs in der Sprache M erstellen.
Wissensstand: Level 3 ⇒ Excel GUT!, mindestens Basis-Kenntnisse in Power Query
Es gibt sehr viele Situationen im PQ-Leben, wo Sie eine Liste der kalendarischen Daten eines definierten Bereichs/Zeitraums erstellen wollen (oder müssen). Und um nicht jedes Mal den M-Code für diese Aufgabe neu erstellen zu müssen bietet es sich an, einmalig eine UDF (selbst definierte Funktion) zu erstellen und diese bei Bedarf in das Projekt einzubinden. Wie Sie eine PQ-UDF in Ihr Projekt einbinden können, wird hier beschrieben. Noch einmal zur Klarstellung: Das Ziel ist es, jeden Tag eines kalendarischen Bereichs in einer Liste aufzuführen, also vom ersten bis zum letztenTag. Der Rhythmus soll exakt 1 Tag sein. – Mit einer typischen M-Formel würden Sie das vermutlich so lösen, wenn die Spaltenüberschriften mit von und bis bezeichnet sind und diese den Datentyp Datum haben:
List.Dates([von],Duration.Days([bis]-[von])+1, #duration(1,0,0,0))
Grundsätzlich ist dieser Code auch die Basis für die UDF. Und hier mein Vorschlag für den Code:
// Datum-Liste aller Tage eines gegebenen Zeitbereichs erstellen
(von, bis)=>
let
dVon = Date.From(von),
dBis = Date.From(bis),
TageListe = List.Dates(dVon, Duration.Days(dBis-dVon)+1, #duration(1,0,0,0))
in
TageListe
Zugegeben, die einzige „Reißleine“ zum Fehlerausgleich ist die automatische Umwandlung eventueller (prinzipiell korrekter) Text-Datums- oder Datum/Uhrzeit-Werte in ein korrektes (Nur-) Datum, aber das Abfangen weiterer Fehler würde die Funktion nur unnötig aufblähen und ich denke, dass ein Mindestmaß an Grundwissen und Verantwortung in Sachen Datentypisierung dazu gehört, wenn ich mit Power Query arbeite.
Wie Sie eine PQ-UDF in Ihrem Projekt anwenden, das können Sie hier in unserem Blog nachlesen.
Rückmeldungen / Feedback gerne per Mail an mich (G.Mumme@Excel-ist-sexy.de)
Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?
Dann würde ich mich über einen Beitrag Ihrerseits z.B. 2,00 € freuen … (← Klick mich!)