Hi @Godzy,
Give this a go:
I have assumed, as you did not specify it, that a “next period” start from “tomorrow”
let
TodaysDate = Date.From(DateTimeZone.FixedUtcNow()),
Ranges = {
{"Today", TodaysDate, TodaysDate, 1},
{"Yesterday", Date.AddDays(TodaysDate,-1), Date.AddDays(TodaysDate,-1), 2},
{"Last 30 Days", Date.AddDays(TodaysDate,-30), TodaysDate, 3},
{"Next 30 Days", Date.AddDays(TodaysDate, 1), Date.AddDays(TodaysDate, 30), 4},
{"Last 60 Days", Date.AddDays(TodaysDate,-60), TodaysDate, 5},
{"Next 60 Days", Date.AddDays(TodaysDate, 1), Date.AddDays(TodaysDate, 60), 6},
{"Last 90 Days", Date.AddDays(TodaysDate,-90), TodaysDate, 7},
{"Next 90 Days", Date.AddDays(TodaysDate, 1), Date.AddDays(TodaysDate, 90), 8}
},
fxCreatePeriodTabe = ( PeriodName as text, StartDate as date, EndDate as date, SortOrder as number ) as table =>
let
DayCount = Duration.Days(EndDate-StartDate)+1,
DateList = List.Dates(StartDate,DayCount,#duration(1,0,0,0)),
AddPeriodName = List.Transform(DateList, each {PeriodName,_,SortOrder}),
CreateTable = #table( type table[Period=text, Date=date, Sort=number], AddPeriodName)
in
CreateTable,
GetTables = List.Transform(Ranges, each fxCreatePeriodTabe(_{0}, _{1}, _{2}, _{3})),
Output = Table.Combine(GetTables)
in
Output
I hope this is helpful