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)
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
Kommentar veröffentlichen