Funzione giorni lavorativi L’argomento è risolto
Moderatore: Utilizzo_prof_Excel
-
- Messaggi: 10 | Topic creati
- Iscritto il: ven 20 nov 2020, 8:13
- Luogo: Follonica
- Contatta:
Funzione giorni lavorativi
Buongiorno, ho cercato tra i vari argomenti del forum e su altri siti internet, ma non ho trovato il modo di tradurre nel linguaggio M la formula di excel "GIORNI.LATORATIVI.TOT".
l'obbiettivo sarebbe di creare una funzione per riprodurre lo stesso risultato di Excel da poter utilizzare nelle Power Query.
Ringrazio in anticipo tutti quelli che risponderanno al mio quesito.
Saluti
Roberto
l'obbiettivo sarebbe di creare una funzione per riprodurre lo stesso risultato di Excel da poter utilizzare nelle Power Query.
Ringrazio in anticipo tutti quelli che risponderanno al mio quesito.
Saluti
Roberto
- Allegati
-
- GG_lavorativi.xlsx
- (8.32 KiB) Scaricato 104 volte
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Funzione giorni lavorativi
Ciao. Per ottenere lo stesso risultato è necessario avere una lista di tutte le festività comprese nell'intervallo di date previsto, da mettere poi in join con la lista di date completa per ottenere la differenza. In poche parole, non esiste nulla di automatico (le festività "locali" non sono precaricate, come in Excel), e va gestito tutto con codice scritto manualmente
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 10 | Topic creati
- Iscritto il: ven 20 nov 2020, 8:13
- Luogo: Follonica
- Contatta:
Funzione giorni lavorativi
Scusa l'insistenza, se io ho un calendario (per comodità consideriamo festivi solo sabato e domenica, implementerò poi con le altre festività) di cui ti riporto lo script nella fiel di testo allegato, come posso trasformarlo in funzione che mi calcoli la differenza di giorni (che nel calendario definisco "lav") tra "data_inizio" e "data_fine" poste in due diverse colonne del file precedentemente allegato?
Grazie per la cortese risposta.
R
Grazie per la cortese risposta.
R
- Allegati
-
- GG_lavorativi.xlsx
- (8.32 KiB) Scaricato 71 volte
-
- Calendario.txt
- (2.06 KiB) Scaricato 77 volte
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Funzione giorni lavorativi
Ci mancherebbe, siamo qui apposta
Date due date come nel tuo excel, per aggiungere una colonna con il conteggio dei giorni dal lunedì al venerdì puoi usare un codice come questo (è un unico passaggio):
allego il file
Date due date come nel tuo excel, per aggiungere una colonna con il conteggio dei giorni dal lunedì al venerdì puoi usare un codice come questo (è un unico passaggio):
Codice: Seleziona tutto
#"Aggiunta colonna personalizzata" = Table.AddColumn(
#"Modificato tipo",
"Lavorativi",
each List.Count(
List.Select(
List.Transform(
List.Dates(
[Data_Inizio],
Number.From([Data_Fine]) - Number.From([Data_Inizio]) + 1,
#duration(1, 0, 0, 0)
),
(x) => Date.DayOfWeek(x)
),
each _ < 5
)
),
Int64.Type
)
- Allegati
-
- GG_lavorativi.xlsx
- (17.82 KiB) Scaricato 123 volte
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 10 | Topic creati
- Iscritto il: ven 20 nov 2020, 8:13
- Luogo: Follonica
- Contatta:
Funzione giorni lavorativi
Grazie, ancora.
Nel frattempo, avrei aggiunto nel calendario allegato anche le festività con un campo che distingue così in modo puntuale i giorni lavorativi da festivi (fest/lav).
Possibile secondo te richiamare con una funzione tale calendario in modo da avere esatto valore di durata in gg lavorativi tra le date inizio e fine di un'altra tabella.
Riallego calendario
Nel frattempo, avrei aggiunto nel calendario allegato anche le festività con un campo che distingue così in modo puntuale i giorni lavorativi da festivi (fest/lav).
Possibile secondo te richiamare con una funzione tale calendario in modo da avere esatto valore di durata in gg lavorativi tra le date inizio e fine di un'altra tabella.
Riallego calendario
- Allegati
-
- Calendario.xlsx
- (176.33 KiB) Scaricato 75 volte
-
Autore del topic - Messaggi: 10 | Topic creati
- Iscritto il: ven 20 nov 2020, 8:13
- Luogo: Follonica
- Contatta:
Funzione giorni lavorativi
Scusate se ritorno sul tema, ripropongo il quesito:
Avendo una calendar table di appoggio, che riallego, in cui ho aggiunto un campo che distingue i giorni lavorativi da quelli festivi comprese le festività.
Da questa è possibile creare una funzione in power query che attingendo a tale tabella calcoli i gg lavorativi tra date presenti in altre tabelle o query?
Allego anche lo script della tabella calendario, se può essere di aiuto.
Ringrazio chiunque mi dia una risposta sull'argomento.
Ciao
Roberto
Avendo una calendar table di appoggio, che riallego, in cui ho aggiunto un campo che distingue i giorni lavorativi da quelli festivi comprese le festività.
Da questa è possibile creare una funzione in power query che attingendo a tale tabella calcoli i gg lavorativi tra date presenti in altre tabelle o query?
Allego anche lo script della tabella calendario, se può essere di aiuto.
Ringrazio chiunque mi dia una risposta sull'argomento.
Ciao
Roberto
- Allegati
-
- Calendario.txt
- (2.06 KiB) Scaricato 38 volte
-
- Calendario.xlsx
- (176.33 KiB) Scaricato 63 volte
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Funzione giorni lavorativi
Ciao, hai fatto benissimo a ricordarmi/ci di essere in credito di una risposta, perché io mi ero scordato che la discussione fosse ancora in sospeso
Ho rifatto la query, spezzando tutti i passaggi così puoi renderti conto di come avviene il filtraggio delle date. Dopo aver cancellato sabati e domeniche, ho fatto un join con la tabella calendario, e ho ulteriormente filtrato i "fest".
Il tutto funziona anche se inserisci più intervalli di tempo uno sotto all'altro nella tabella iniziale; l'unico problema sarebbe se tu avessi dei periodi interamente festivi. In questo caso non restituirebbe 0, ma il periodo sparirebbe completamente dalla lista. SI può ovviare anche a questo, se serve.
Codeice M:
Ho rifatto la query, spezzando tutti i passaggi così puoi renderti conto di come avviene il filtraggio delle date. Dopo aver cancellato sabati e domeniche, ho fatto un join con la tabella calendario, e ho ulteriormente filtrato i "fest".
Il tutto funziona anche se inserisci più intervalli di tempo uno sotto all'altro nella tabella iniziale; l'unico problema sarebbe se tu avessi dei periodi interamente festivi. In questo caso non restituirebbe 0, ma il periodo sparirebbe completamente dalla lista. SI può ovviare anche a questo, se serve.
Codeice M:
Codice: Seleziona tutto
// periodi
let
Origine = Excel.CurrentWorkbook(){[Name="periodi"]}[Content],
#"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"Data_Inizio", type date}, {"Data_Fine", type date}}),
#"Aggiunta colonna personalizzata" = Table.AddColumn(#"Modificato tipo", "date", each List.Dates([Data_Inizio], Number.From([Data_Fine])-Number.From([Data_Inizio])+1, #duration(1,0,0,0))),
#"Tabella date espansa" = Table.ExpandListColumn(#"Aggiunta colonna personalizzata", "date"),
#"Modificato tipo1" = Table.TransformColumnTypes(#"Tabella date espansa",{{"date", type date}}),
#"Nome del giorno inserito" = Table.AddColumn(#"Modificato tipo1", "Nome del giorno", each Date.DayOfWeekName([date]), type text),
#"Filtrate righe" = Table.SelectRows(#"Nome del giorno inserito", each ([Nome del giorno] <> "domenica" and [Nome del giorno] <> "sabato")),
#"Merge di query eseguito" = Table.NestedJoin(#"Filtrate righe", {"date"}, Calendario, {"Giorno"}, "Calendario", JoinKind.LeftOuter),
#"Tabella Calendario espansa" = Table.ExpandTableColumn(#"Merge di query eseguito", "Calendario", {"Lav_fest"}, {"Lav_fest"}),
#"Filtrate righe1" = Table.SelectRows(#"Tabella Calendario espansa", each ([Lav_fest] = "lav")),
#"Raggruppate righe" = Table.Group(#"Filtrate righe1", {"Data_Inizio", "Data_Fine"}, {{"Giorni_Lav", each Table.RowCount(_), Int64.Type}})
in
#"Raggruppate righe"
- Allegati
-
- GG_lavorativi.xlsx
- (19.65 KiB) Scaricato 55 volte
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 10 | Topic creati
- Iscritto il: ven 20 nov 2020, 8:13
- Luogo: Follonica
- Contatta:
Funzione giorni lavorativi
Grazie della risposta tempestiva e puntuale, effettivamente ho verificato che in caso di periodi festivi l'intervallo di tempo sparisce invece di restituire 0.
Se fosse possibile correggere il bug, te ne sarei grato.
In ultimo, la query che hai creato come può essere trasformata in funzione>?
Nel file allegato ho aggiunto l'esempio della funzione Percentile creata per altra analisi.
Attendo vs.
ciao
Se fosse possibile correggere il bug, te ne sarei grato.
In ultimo, la query che hai creato come può essere trasformata in funzione>?
Nel file allegato ho aggiunto l'esempio della funzione Percentile creata per altra analisi.
Attendo vs.
ciao
- Allegati
-
- GG_lavorativi.xlsx
- (261.73 KiB) Scaricato 44 volte
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Funzione giorni lavorativi
Ho fatto le seguenti modifiche:
1) il calendario è stato filtrato per i soli giorni festivi
2) il calcolo dei lavorativi è diventato la seguente funzione:
Fammi sapere, ciao
1) il calendario è stato filtrato per i soli giorni festivi
2) il calcolo dei lavorativi è diventato la seguente funzione:
Codice: Seleziona tutto
// fxGGlav
(datainizio as date, datafine as date) as number =>
let
gglav = List.Count(
List.Select(
List.Dates(
datainizio,
Number.From(datafine) - Number.From(datainizio) + 1,
#duration(1, 0, 0, 0)
),
(x) => not List.Contains(Calendario_festivi[Giorno], x)
)
)
in
gglav
- Allegati
-
- GG_lavorativi v2.xlsx
- (253.25 KiB) Scaricato 112 volte
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 10 | Topic creati
- Iscritto il: ven 20 nov 2020, 8:13
- Luogo: Follonica
- Contatta:
Funzione giorni lavorativi
Buongiorno, ritorno su un vecchio tema per una nuova richiesta.
Avendo un calendario che distingue tra giorni lavorativi e festivi comprese le festività, come faccio con le power query ad aggiungere ad una data 3 giorni lavorativi in modo che mi restituisca ovviamente una data di giorno lavorativo?
Allego file di esempio fatto con funzione excel e codice calendario per giorni festivi/lavorativi (casella di testo affianco).
Ringrazio per il supporto.
Saluti
Roberto
Avendo un calendario che distingue tra giorni lavorativi e festivi comprese le festività, come faccio con le power query ad aggiungere ad una data 3 giorni lavorativi in modo che mi restituisca ovviamente una data di giorno lavorativo?
Allego file di esempio fatto con funzione excel e codice calendario per giorni festivi/lavorativi (casella di testo affianco).
Ringrazio per il supporto.
Saluti
Roberto
- Allegati
-
- Aggiunta giorni lavorativi.xlsx
- File di esempio con codice calendario giorni lavorativi/festivi
- (12.73 KiB) Scaricato 38 volte