공휴일도 고려하지 않으면이 문제를 해결하는 사용자 지정 함수를 작성했습니다. 조금 보편적인데, 그것은 2 또는 200 또는 2000 일 추가되었습니다. Excel에서 =WORKDAY(date;days)
함수와 같습니다. 여기
그것이 :
이
(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,
마이클, 귀하의 코드가 잘못된 솔루션을 제공합니다. 1 일, 수요일 + 2 영업일 = 금요일. 2nd, Date.DayOfWeek ([ETA], Day.Wednesday) <= 3은 * wendesday - saturday *를 의미합니다. 셋째, 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과 같습니다. 두 경우 모두 Date.DayOfWeek ([ETA], Day.Wednesday) <= 3' 인 조건을 충족시킵니다. – Eugene