Я написал пользовательскую функцию, которая решает эту проблему, если вам не нужно учитывать праздники. Он немного универсален, он работает с 2 или 200 или 2000 добавленными днями. Equals =WORKDAY(date;days)
функция в Excel.
Здесь:
(startDate, days) =>
let
Step1 = List.Dates(Date.AddDays(startDate, 1), days + Number.RoundUp(days/7*3+4,0), #duration(1,0,0,0)), //provision list of added days with 3 more days per each added week, starting from startDate + 1 day
Step2 = List.Select(Step1, (item) => Date.DayOfWeek(item, Day.Monday) < 5), // select only workdays
Step3 = List.FirstN(Step2, days), //select required number of workdays
Output = if days <= 0 then startDate else List.Last(Step3)
in
Output
Вы можете сохранить его в качестве запроса, назовите его, скажем, AddWorkdays
, и использовать, как это:
YourStepName = Table.AddColumn(yourTable, "CustomColumnName",
each AddWorkdays([ETA], if [REF]="1" then 3 else 2)
//note that [REF]="1" filters a text value, not number!
В противном случае вы можете вставить эту функцию в код в качестве
fnAddWorkdays = (startDate, days) =>
let
Step1 = List.Dates(Date.AddDays(startDate, 1), days + Number.RoundUp(days/7*3+4,0), #duration(1,0,0,0)), //provision list of added days with 3 more days per each added week, starting from startDate + 1 day
Step2 = List.Select(Step1, (item) => Date.DayOfWeek(item, Day.Monday) < 5), // select only workdays
Step3 = List.FirstN(Step2, days), //select required number of workdays
Output = if days <= 0 then startDate else List.Last(Step3)
in
Output,
Michael, ваш код обеспечивает неправильное решение. 1, среда + 2 рабочих дня = пятница. 2nd, 'Date.DayOfWeek ([ETA], Day.Wednesday) <= 3' означает * wendesday - суббота *. В-третьих, есть случаи, когда нужно добавить 2 или 3 дня, это требует различной обработки. – Eugene
Я уточнил свой ответ. Я просто предлагаю решение добавить еще 2 дня, если потребуется, чтобы обработать выходные. Я также предположил, что OP может справиться с модификацией кода для дополнительного случая. Им просто нужно добавить строку кода, разработанную OP. – Michael
Это была не единственная проблема. 'Date.DayOfWeek (#date (2017,2,15), Day.Wednesday) равно 0'. 'Date.DayOfWeek (#date (2017,2,18), Day.Wednesday) равно 3'. Оба попали в ваше состояние 'if Date.DayOfWeek ([ETA], Day.Wednesday) <= 3'. – Eugene