Enrico Galli ha scritto: ↑Scrivi una funzione in linguaggio M (Power Query per Excel) per generare una tabella calendario con le colonne:
Data
Anno
Mese
Giorno
Giorno della settimana
Passato/Futuro
Weekend
Ecco una funzione che genera una tabella calendario con le colonne richieste:
```m
let
GenerateCalendar = (startDate as date, endDate as date) =>
let
StartYear = Date.Year(startDate),
StartMonth = Date.Month(startDate),
StartDay = Date.Day(startDate),
EndYear = Date.Year(endDate),
EndMonth = Date.Month(endDate),
EndDay = Date.Day(endDate),
NumberOfDays = Duration.Days(endDate - startDate),
DateList = List.Dates(startDate, NumberOfDays+1, #duration(1,0,0,0)),
CalendarTable = Table.FromList(DateList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
RenamedColumns = Table.RenameColumns(CalendarTable,{{"Column1", "Data"}}),
AddYearColumn = Table.AddColumn(RenamedColumns, "Anno", each Date.Year([Data])),
AddMonthColumn = Table.AddColumn(AddYearColumn, "Mese", each Date.Month([Data])),
AddDayColumn = Table.AddColumn(AddMonthColumn, "Giorno", each Date.Day([Data])),
AddWeekdayColumn = Table.AddColumn(AddDayColumn, "Giorno della settimana", each Date.DayOfWeek([Data])),
AddPastFutureColumn = Table.AddColumn(AddWeekdayColumn, "Passato/Futuro", each if [Data] < DateTime.LocalNow() then "Passato" else "Futuro"),
AddWeekendColumn = Table.AddColumn(AddPastFutureColumn, "Weekend", each if Date.DayOfWeek([Data]) >= 5 then "Sì" else "No")
in
AddWeekendColumn
in
GenerateCalendar
```
Per utilizzare questa funzione, dovrai creare una nuova query in Power Query e quindi incollare il codice sopra riportato. Successivamente, potrai chiamare la funzione `GenerateCalendar` passando come argomenti una data di inizio e una data di fine per generare la tabella calendario desiderata.
Spero che questa risposta ti sia stata utile! Fammi sapere se hai altre domande.