Ok this isn’t actually so easy but here the solution to get you going.
See the below table breaks out the workday and weekend numbers
Here’s the formulas for that
Workday Number =
VAR CurrentMonth = SELECTEDVALUE( Dates[Month & Year] )
VAR MonthTable = FILTER( ALL( Dates ), Dates[Working Days] = "Weekday" && Dates[Month & Year] = CurrentMonth )
RETURN
IF( SELECTEDVALUE( Dates[Working Days] ) <> "Weekday",
BLANK(),
RANKX( MonthTable, CALCULATE( AVERAGE( Dates[DayOfMonth] ) ), , ASC ))
Here’s the weekend one
Weekend Number =
VAR CurrentMonth = SELECTEDVALUE( Dates[Month & Year] )
VAR MonthTable = FILTER( ALL( Dates ), Dates[Working Days] = "Weekend" && Dates[Month & Year] = CurrentMonth )
RETURN
IF( SELECTEDVALUE( Dates[Working Days] ) <> "Weekend",
BLANK(),
RANKX( MonthTable, CALCULATE( AVERAGE( Dates[DayOfMonth] ) ), , ASC ))
Then we get to the hard part.
We need to jump back one year and find the corresponding workday date. This formula works as you can see
Here’s the formula
Sales LY Weekday =
VAR CurrentWorkday = [Workday Number]
RETURN
IF( SELECTEDVALUE( Dates[Working Days] ) <> "Weekday",
BLANK(),
SUMX( FILTER(
SUMMARIZE( ALL( Dates ), Dates[Date], Dates[Year], Dates[MonthOfYear], "Working Day", [Workday Number] ),
Dates[Year] = MIN( Dates[Year] ) - 1 &&
Dates[MonthOfYear] = MIN( Dates[MonthOfYear] ) &&
[Working Day] = CurrentWorkday ),
[Total Sales] ))
To get the weekend would just need slight adjustment to this.
See how you go with these and the logic here.