Forum Discussion
dolphin18
1 year agoFrequent Visitor
How to efficiently create a weeks calculator
Hello, I am trying to find a better way to write my M code that calculates the week # that a date falls on from my current week (Week 0). So, for example, say I have a start date of 7/31/2025 and...
- 1 year ago
Hi dolphin18
The following m code should help you,
Just rename YourPreviousStepName by the name of your previous step
let DesiredWeekStartDate = #date(2025, 1, 1), AddWeekNumberColumn = Table.AddColumn( YourPreviousStepName, "Week", each let DaysDifference = Duration.Days([Start Date] - DesiredWeekStartDate ), WeekNumber = if DaysDifference >= 0 then "Week " & Text.From(Number.RoundDown(DaysDifference / 7)) else null in WeekNumber, type text ) in AddWeekNumberColumn - 1 year ago
let start_week = Date.StartOfWeek(#date(2025, 6, 24)), Source = #table( {"ID", "Start Date"}, { {"A", #date(2025, 6, 23)}, {"B", #date(2025, 7, 1)}, {"C", #date(2025, 8, 11)}, {"D", #date(2025, 4, 2)} } ), week_no = Table.AddColumn( Source, "Week", (x) => ((days_between) => if days_between < 0 then null else days_between / 7 )(Duration.Days(Date.StartOfWeek(x[Start Date]) - start_week)) ) in week_no
Cookistador
1 year agoSuper User
Hi dolphin18
The following m code should help you,
Just rename YourPreviousStepName by the name of your previous step
let
DesiredWeekStartDate = #date(2025, 1, 1),
AddWeekNumberColumn = Table.AddColumn(
YourPreviousStepName,
"Week",
each
let
DaysDifference = Duration.Days([Start Date] - DesiredWeekStartDate ),
WeekNumber =
if DaysDifference >= 0 then
"Week " & Text.From(Number.RoundDown(DaysDifference / 7))
else
null
in
WeekNumber,
type text
)
in
AddWeekNumberColumn
dolphin18
1 year agoFrequent Visitor
Thank you Cookistador! This also worked for me with the small adjustment from the other solution above. Appreciate the help!!