The below measure return the Total No. of Days in the Selected Week of the Month. It return the values like 1, 3, 5, 7, based on the No. of days available in that Selected Week.
Generally we will get maximum value of 7 Days, however, in the Month Start and Month End weeks, we will get the lower number.
Total Days in Week =
VAR vMaxSaleWeek =
CALCULATE(WEEKNUM(MAX(tbl_OrderDetails[Order_Date])),
ALLSELECTED(tbl_Calendar))
VAR vMaxWeek = WEEKNUM(MAX(tbl_Calendar[cDate]))
VAR vWeekMinDt = CALCULATE(MIN(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] = MIN(tbl_Calendar[Week_No]))
VAR vWeekMaxDt = CALCULATE(MAX(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] = MIN(tbl_Calendar[Week_No]))
VAR vTotalDaysInWeek = DATEDIFF(vWeekMinDt, vWeekMaxDt, DAY)+1
RETURN
vTotalDaysInWeek
//IF(vMaxWeek<=vMaxSaleWeek,vTotalDaysInWeek)
---------------------------------------------------
Similarly we can find the No. of Days in Year, Quarter, Month, Week Start Date and Week End Date as follows:
Related Articles:
https://excelkingdom.blogspot.com/2023/04/how-to-calculate-total-days-and-days.html
The below Measure returns the Cumulative No. of Days in a Week, like 1,2,3,4,5,6,7.
Cum Days in Week =
VAR vMaxSaleDT =
CALCULATE(MAX(tbl_OrderDetails[Order_Date]),
ALLSELECTED(tbl_Calendar))
VAR vMaxSaleWeek =
CALCULATE(WEEKNUM(MAX(tbl_OrderDetails[Order_Date])),
ALLSELECTED(tbl_Calendar))
VAR vMaxDt = MAX(tbl_Calendar[cDate])
VAR vMaxWeek = WEEKNUM(MAX(tbl_Calendar[cDate]))
VAR vMinWeekDT =
CALCULATE(MIN(tbl_Calendar[cDate]), ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] = MAX(tbl_Calendar[Week_No]))
VAR vCumDaysInWeek =
CALCULATE(COUNT(tbl_Calendar[Week_No]),
tbl_Calendar[cDate]>=vMinWeekDT && tbl_Calendar[cDate]<=vMaxDt )
RETURN
vCumDaysInWeek
//IF(vMaxWeek<=vMaxSaleWeek,vCumDaysInWeek)
---------------------------------------------------
The below returns the Total Days that Completed in a Week. It return the values like 1, 3, 7 based on the Closed No. of Days in Week.
Total Days Pass in Week =
VAR vMaxSaleDt =
CALCULATE(MAX(tbl_OrderDetails[Order_Date]), ALLSELECTED(tbl_Calendar))
VAR vMaxSaleWeek =
CALCULATE(WEEKNUM(MAX(tbl_OrderDetails[Order_Date])),
ALLSELECTED(tbl_Calendar))
VAR vMaxWeek = WEEKNUM(MAX(tbl_Calendar[cDate]))
VAR vWeekMinDt =
CALCULATE(MIN(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] = MIN(tbl_Calendar[Week_No]))
VAR vWeekMaxDt =
CALCULATE(MAX(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] = MAX(tbl_Calendar[Week_No]))
VAR vAdjMaxDt = IF (vWeekMaxDt<=vMaxSaleDT, vWeekMaxDt, vMaxSaleDT)
VAR vTotalDaysPassInWeek = DATEDIFF(vWeekMinDt,vAdjMaxDt,DAY)+1
RETURN
IF(vMaxWeek<=vMaxSaleWeek,vTotalDaysPassInWeek,0)
---------------------------------------------------The below Measure returns the Cumulative No. of Days that Passed in a Week. It return the values like 1,2,3,4.....7
Cum Days Pass in Week =
VAR vMaxSaleDT =
CALCULATE(MAX(tbl_OrderDetails[Order_Date]), ALLSELECTED(tbl_Calendar))
VAR vMaxSaleWeek =
CALCULATE(WEEKNUM(MAX(tbl_OrderDetails[Order_Date])),
ALLSELECTED(tbl_Calendar))
VAR vMaxDt = MAX(tbl_Calendar[cDate])
VAR vMaxWeek = WEEKNUM(MAX(tbl_Calendar[cDate]))
VAR vMinWeekDT =
CALCULATE(MIN(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] = MAX(tbl_Calendar[Week_No]))
VAR vWeekMaxDt =
CALCULATE(MAX(tbl_Calendar[cDate]), ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] = MAX(tbl_Calendar[Week_No]))
VAR vAdjMaxDt = IF (vMaxDt<=vMaxSaleDT, vMaxDt, vMaxSaleDT)
VAR vCumDaysPassInWeek = CALCULATE(COUNT(tbl_Calendar[Week_No]),
tbl_Calendar[cDate]>=vMinWeekDT &&
tbl_Calendar[cDate]<=vAdjMaxDt )
RETURN
IF(vMaxWeek<=vMaxSaleWeek,vCumDaysPassInWeek,0)
---------------------------------------------------
The below Measure returns the Cumulative Total no. of Days from each Week. It returns the values like 1, 8, 15, 22...Cum Total Days in Week =
VAR vMaxSaleWeek =
CALCULATE(WEEKNUM(MAX(tbl_OrderDetails[Order_Date])),
ALLSELECTED(tbl_Calendar))
VAR vMaxWeek = WEEKNUM(MAX(tbl_Calendar[cDate]))
VAR vMaxDt = MAX(tbl_Calendar[cDate])
VAR vWeekMinDt = CALCULATE(MIN(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] <= MAX(tbl_Calendar[Week_No]))
VAR vWeekMaxDt = CALCULATE(MAX(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] <= MAX(tbl_Calendar[Week_No]))
VAR vCumTotalDaysInWeek = DATEDIFF(vWeekMinDt,vWeekMaxDt,DAY)+1
RETURN
vCumTotalDaysInWeek
//IF(vMaxWeek<=vMaxSaleWeek,vCumTotalDaysInWeek)
---------------------------------------------------
The below Measure returns Cumulative Total no. of Days Passed from each Week. It returns the values like 1, 8, 15, 22...
Cum Total Days Pass in Week =
VAR vMaxSaleDT =
CALCULATE(MAX(tbl_OrderDetails[Order_Date]), ALLSELECTED(tbl_Calendar))
VAR vMaxSaleWeek =
CALCULATE(WEEKNUM(MAX(tbl_OrderDetails[Order_Date])),
ALLSELECTED(tbl_Calendar))
VAR vMaxWeek = WEEKNUM(MAX(tbl_Calendar[cDate]))
VAR vMaxDt = MAX(tbl_Calendar[cDate])
VAR vWeekMinDt = CALCULATE(MIN(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] <= MAX(tbl_Calendar[Week_No]))
VAR vWeekMaxDt = CALCULATE(MAX(tbl_Calendar[cDate]),
ALLSELECTED(tbl_Calendar),
tbl_Calendar[Week_No] <= MAX(tbl_Calendar[Week_No]))
VAR vAdjMaxDt = IF (vWeekMaxDt<=vMaxSaleDT, vWeekMaxDt, vMaxSaleDT)
VAR vCumTotalDaysPassInWeek = DATEDIFF(vWeekMinDt,vAdjMaxDt,DAY)+1
RETURN
IF(vMaxWeek<=vMaxSaleWeek,vCumTotalDaysPassInWeek,0)
---------------------------------------------------
Now we can see the result of all the measures as shown below:Similarly we can find the No. of Days in Year, Quarter, Month, Week Start Date and Week End Date as follows:
Total Days In Year =
DATEDIFF(STARTOFYEAR(tbl_Calendar[cDate]),
ENDOFYEAR(tbl_Calendar[cDate]), DAY)+1
Total Days In Quarter =
DATEDIFF(STARTOFQUARTER(tbl_Calendar[cDate]),
ENDOFQUARTER(tbl_Calendar[cDate]), DAY)+1
Total Days In Month =
VAR vToday = DATE(YEAR(TODAY()), MONTH(TODAY()), DAY(TODAY()))
VAR vMaxSaleDT =
CALCULATE(MAX(tbl_OrderDetails[Order_Date]), ALLSELECTED(tbl_Calendar))
VAR vMonthStartDt = STARTOFMONTH(tbl_Calendar[cDate])
VAR vMonthEndDt = ENDOFMONTH(tbl_Calendar[cDate])
VAR vDaysDiff = DATEDIFF(vMonthStartDt,vMonthEndDt,DAY)+1
RETURN
IF(vMonthStartDt<=vMaxSaleDT,vDaysDiff)
Total Days Pass in Month =
VAR vMaxSaleDT =
CALCULATE(MAX(tbl_OrderDetails[Order_Date]), ALLSELECTED(tbl_Calendar))
VAR vMonthStartDt = STARTOFMONTH(tbl_Calendar[cDate])
VAR vMonthEndDt = ENDOFMONTH(tbl_Calendar[cDate])
VAR vAdjMaxDt = IF (vMonthEndDt<=vMaxSaleDT, vMonthEndDt, vMaxSaleDT)
VAR vDaysDiff = DATEDIFF(vMonthStartDt,vAdjMaxDt,DAY)+1
RETURN
IF(vMonthStartDt<=vMaxSaleDT,vDaysDiff)
Week Start Date =
MIN(tbl_Calendar[cDate])-WEEKDAY(MIN(tbl_Calendar[cDate]))+1
Week End Date =
MIN(tbl_Calendar[cDate])-WEEKDAY(MIN(tbl_Calendar[cDate]))+7
---------------------------------------------------
Result:
https://excelkingdom.blogspot.com/2023/04/how-to-calculate-total-days-and-days.html
https://excelkingdom.blogspot.com/2023/04/how-to-calculate-average-and-cumulative.html
--------------------------------------------------------------------------------------------------------
Thanks, TAMATAM ; Business Intelligence & Analytics Professional
--------------------------------------------------------------------------------------------------------
No comments:
Post a Comment
Hi User, Thank You for visiting My Blog. Please post your genuine Feedback or comments only related to this Blog Posts. Please do not post any Spam comments or Advertising kind of comments which will be Ignored.