Power Query, Arbeitstage anhand Start- und Enddatum ermitteln

Lern Video





Ausgangstabelle:
Tabellenname: Tabelle1

Ergebnis:



optional können weitere Feiertage in einer Tabelle "Feiertage" (Spalte = Feiertage) erfasst werden, welche bei der Berechnung der Arbeitstage berücksichtigt werden

Language M Code (Power Query -> erweiterter Editor -> einfügen)

let
    fxArbeitstage = (start as date, end as date, optional Feiertage as list) as number =>
        let
           Liste_Feiertage = if Feiertage = null then {} else Feiertage,
           Liste_Tage = {Number.From(start)..Number.From(end)},
           Liste_Differenz  = List.Difference(Liste_Tage, Liste_Feiertage),
           Liste_Mod = List.Transform(Liste_Differenz, each Number.Mod(_, 7)),
           Liste_Sel = List.Select(Liste_Mod, each _>1),
           Ergebnis = List.Count(Liste_Sel)
         in
           Ergebnis,
    Feiertage_Import =  try Excel.CurrentWorkbook(){[Name="Feiertage"]}[Content] otherwise Table.FromColumns({{}}, {"Feiertage"}),
    Feiertage = List.Buffer(Table.TransformColumnTypes(Feiertage_Import,{{"Feiertage", type number}})[Feiertage]),
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    Datumstyp_aendern = Table.TransformColumnTypes(Quelle,{{"StartDatum", type date}, {"EndDatum", type date}}),
    Anzahl_Arbeitstage = Table.AddColumn(Datumstyp_aendern, "Arbeitstage", each fxArbeitstage([StartDatum], [EndDatum], Feiertage))
in
    Anzahl_Arbeitstage


wiederverwendbare Funktion (Anzahl Wochentage unter Berücksichtigung von Feiertagen)

--- SCHNIPP

(start as date, end as date, optional Feiertage as list) as number =>
        let
           //Tabelle Feiertage importieren falls vorhanden
           Feiertage_Import =  try Excel.CurrentWorkbook(){[Name="Feiertage"]}[Content] otherwise Table.FromColumns({{}}, {"Feiertage"}),
           Feiertage = List.Buffer(Table.TransformColumnTypes(Feiertage_Import,{{"Feiertage", type number}})[Feiertage]),
           Liste_Feiertage = if Feiertage = null then {} else Feiertage,
           Liste_Tage = {Number.From(start)..Number.From(end)},
           Liste_Differenz  = List.Difference(Liste_Tage, Liste_Feiertage),
           Liste_Mod = List.Transform(Liste_Differenz, each Number.Mod(_, 7)),
           Liste_Sel = List.Select(Liste_Mod, each _>1),
           Ergebnis = List.Count(Liste_Sel)
         in
           Ergebnis

--- SCHNAPP

Anwendungsbeispiel Berechnung Liefertreue, Lieferzeit auf Basis SAP Daten

Arbeitstage in Kalendertage umrechnen (Modulo Operator)

Kommentare

Beliebte Posts aus diesem Blog

Vergleich mit 2 Bedingungen, INDEX(), VERGLEICH()

Dropdown Liste mit Mehrfachauswahl

nützliche Text Funktionen in Power Query