Friday, July 4, 2014

Calculate work days in SharePoint

Excel has nice built in function NETWORKDAYS unfortunately it is not available in SharePoint
Available functions in SharePoint to work with dates are DATEDIFF, WEEKDAY

There is a lot of examples you can find, but all that I have found so far have errors.
So had to create my own.


=(FLOOR((DATEDIF(StartDate,EndDate,"D")+1)/7.0000001,1)+1)*5
-IF(IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))=1,1,0)
-IF(IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))<3,1,0)
-IF(IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))<4,1,0)
-IF(IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))<5,1,0)
-IF(AND(WEEKDAY(StartDate,2)<>1, IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))<>7, (IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))+WEEKDAY(StartDate,2))>6),1,0)
-IF(AND(WEEKDAY(StartDate,2)<7, WEEKDAY(StartDate,2)>2, IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))<6, (IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))+WEEKDAY(StartDate,2))>7),1,0)
+IF( AND(IF(MOD((DATEDIF(StartDate,EndDate,"D")+1),7)=0,7,MOD((DATEDIF(StartDate,EndDate,"D")+1),7))=6, WEEKDAY(StartDate,2)=7),1,0)

Just copy/paste in Calculated field and replace StartDate and EndDate with appropriate field names.

No comments:

Post a Comment