Giorni Lavorativi. Calcoli e implicazioni Stampa
Scritto da Paolo Ardizzoni   
Domenica 21 Novembre 2010 18:44

Nella pratica quotidiana aziendale si pone spesso, e in varia misura, l'esigenza di calcolare il numero di giorni lavorativi fra due date o, anche, di una nuova data ottenuta aggiungendo/sottraendo un certo numero di giorni lavorativi a/da una data iniziale. A volte può essere necessario includere anche i giorni festivi infrasettimanali, quali le feste nazionali, oppure escludere solo il sabato o solo la domenica o, infine, trasferire i festivi sabato e domenica su altri giorni infrasettimanali.

A questo scopo Excel mette a disposizione le seguenti funzioni dedicate:

GIORNI.LAVORATIVI.TOT(data_iniziale; data_finale; [vacanze]) operativa dalla versione 2000 di Excel e utilizzabile se è attivo il componente aggiuntivo "Strumenti di analisi".

GIORNI.LAVORATIVI.TOT.INTL(data_iniziale; data_finale; [festivi]; [vacanze]) operativa dalla versione 2010.

GIORNO.LAVORATIVO(data_iniziale; giorni; [vacanze]) operativa dalla versione 2000 e utilizzabile se è attivo il componente aggiuntivo "Strumenti di analisi".

GIORNO.LAVORATIVO.INTL(data_iniziale; giorni; [festivi]; [vacanze]) operativa dalla versione 2010.

 **********-***********

 GIORNI.LAVORATIVI.TOT(data_iniziale; data_finale; [vacanze])

La funzione, operativa dalla versione 2000 di Excel se è stato attivato il componente aggiuntivo "Strumenti di analisi", restituisce il numero di giorni intercorrenti fra due date utilizzando un argomento (argomento: valore che fornisce informazioni per un'azione, un evento, un metodo, una proprietà, una funzione o una routine) per indicare quali sono i giorni da considerare non lavorativi.

Nella sintassi della funzione sono previsti i seguenti argomenti:
- data_iniziale e data_finale (obbligatorio): date di cui è necessario calcolare la differenza. La data_iniziale può essere precedente, contemporanea o successiva alla data_finale. In quest’ultimo caso il risultato sarà corretto ma negativo.

- vacanze*:   facoltativo. Insieme di una o più date da escludere dal calendario lavorativo. L’argomento Vacanze consiste in una data, più date sono rappresentate da una cella o un intervallo di celle contenenti le date o anche da una costante di matrice** di valori seriali che rappresentano tali date. L'ordinamento delle date o i valori seriali delle vacanze possono essere arbitrari.

* Va precisato che il termine vacanze è generalmente riferito ai giorni non lavorativi. Nella pratica è normalmente utilizzato per escludere dal conteggio le festività nazionali e quelle locali (es. la festa del Patrono).

** Per convertire l'intervallo di celle consecutive contenenti i giorni di vacanze in una costante di matrice di valori seriali, selezionare l’intervallo scritto all’interno della formula, quindi premere F9. Se, per esempio, i giorni di vacanza fossero 1/1/2010, 6/1/2010 e 5/4/2010 e nella formula fossero indicati come intervallo H1:H3, la pressione del tasto F9 dopo la selezione della scritta H1:H3 trasformerebbe appunto l’intervallo nella seguente matrice {40179\40184\40273} le cui costanti non sono altro che i numeri seriali delle rispettive date.

N.B.: Le date devono essere immesse utilizzando la funzione DATA o devono essere il risultato di altre formule o funzioni. Utilizzare, ad esempio, DATA(2008;5;23) per il 23 maggio 2008. Le date immesse come testo potrebbero dare risultati inattesi o errati. Esse possono anche essere costituite da riferimenti di cella contenenti una data.

La seguente fig.1 mostra quattro diversi modi di impostare l’argomento Vacanze nella funzione:

giornilavtot
(fig.1)

Come si può notare nella fig.1, la formula in E2 utilizza come terzo argomento un Nome. Vale a dire che si è attribuito il nome Int_Vac all’intervallo H2:H13 del Foglio1 (vedi fig.2).


(fig.2)

L’assegnazione di un Nome ad un intervallo consente, in alternativa agli estremi dell’intervallo, di utilizzarlo nelle formule anche se ubicate in qualsiasi foglio del file/cartella.

N.B.: Nella versione 2010 di Excel il segno separatore delle costanti di matrici verticali è il punto “.” anziché la barra rovescia “\”. Per le matrici orizzontali la barra rovescia “\” ha sostituito il punto e virgola “;”.

Per evitare di appesantire graficamente il foglio dei calcoli, nell’esempio il Foglio1, l’intervallo a cui è riferito il Nome potrebbe essere scritto su di un foglio diverso. Se, per esempio, le date delle vacanze fossero scritti in colonna A del Foglio2, nel campo “Riferito a:” del Nome, l’intervallo verrebbe individuato da:
=Foglio2!$A$1:$A$13.

Le date delle vacanze, quando riferite alle festività nazionali ed al Patrono, o analoghe, restano comunque fisse al variare dell’anno ad eccezione della Pasqua e, di conseguenza, del lunedì di Pasqua o Pasquetta. Poiché la Pasqua viene sempre di domenica non vi è necessità di considerarla Vacanza, per contro la Pasquetta sì. Per ottenere la data aggiornata in relazione all’anno occorre inserire la formula di fig.3.

 
(fig.3)

La funzione GIORNI.LAV.TOT. esegue il calcolo escludendo sia il sabato sia la domenica in quanto giorni non lavorativi. Per modificare tale impostazione, volendo per esempio il sabato lavorativo, occorre utilizzare formule più complesse. Vedi esempio di fig.4.


(fig.4)

Per una più compiuta analisi dei calcoli sulle date in genere, vedi il file "Delledate.xls": http://www.prodomosua.eu/contributi/index.html

Per ovviare a calcoli complicati nella versione 2010 di Excel è stata aggiunta la nuova funzione GIORNI.LAVORATIVI.TOT.INTL(…) che consente un più articolato uso dei giorni non lavorativi rendendo di fatto superati i conteggi di cui alla precedente fig.4.

*******-*******

GIORNI.LAVORATIVI.TOT.INTL(data_inizio; data_fine; [festivi]; [vacanze])

Nuova funzione introdotta con la versione 2010 di Excel.
 Restituisce il numero di giorni lavorativi intercorrenti fra due date ma, a differenza della precedente, introduce un ulteriore argomento costituito dai festivi.

- festivi (facoltativo): Indica i giorni della settimana considerati festivi e non inclusi nel numero dei giorni lavorativi tra la data_iniziale e la data_finale. Festivi rappresenta un numero di festività o una stringa che indica i giorni festivi (fig.5).

Numeri di festività:

(fig.5)

I valori delle stringhe festivi contengono sette caratteri, ognuno dei quali rappresenta un giorno della settimana, partendo da lunedì. 1 rappresenta un giorno non lavorativo, mentre 0 un giorno lavorativo. La stringa accetta solo i caratteri 1 e 0. Se si utilizza “1111111”, verrà restituito sempre 0, ovvero tutti i giorni non lavorativi. Invece “0000001” computerà come risultato festivo la sola domenica. Vedi gli esempi di fig.6.


(fig.6)

Osservazioni:
- se data_iniziale è successiva a data_finale, il valore restituito sarà il numero totale dei giorni lavorativi negativo.
- se data_iniziale o data_finale non sono compresa nell'intervallo per il valore di base della data corrente, la funzione restituirà il valore di errore #NUM!.
- se una stringa festivi presenta una lunghezza non valida o contiene caratteri non validi, la funzione restituirà il valore di errore #VALORE!.

********-*********

GIORNO.LAVORATIVO(data_iniziale; giorni; [vacanze])

La funzione, operativa dalla versione 2000 di Excel se è stato attivato il componente aggiuntivo "Strumenti di analisi", restituisce un numero che rappresenta una data che precede o segue la data_iniziale di un numero di giorni specificato. La funzione esclude dal calcolo il sabato e la domenica.

Nella sintassi della funzione GIORNO.LAVORATIVO sono previsti gli argomenti seguenti:
- data_iniziale (obbligatorio): data che rappresenta la data di inizio.

- giorni (obbligatorio): numero dei giorni che precedono o seguono data_iniziale, esclusi i fine settimana e le festività. Un valore positivo per giorni indica una data futura, mentre un valore negativo corrisponde a una data anteriore.

- vacanze (facoltativo): elenco di una o più date da escludere dal calendario lavorativo. L'elenco può essere composto da un intervallo di celle contenenti le date o da una costante di matrice dei numeri seriali che rappresentano le date.

N.B.: le date devono essere immesse utilizzando la funzione DATA o devono essere il risultato di altre formule o funzioni. Utilizzare, ad esempio, la funzione DATA(2010;11;10) per il 10 novembre 2010. È possibile che si verifichino problemi se le date vengono immesse come testo.

Esempi (fig.7):


(fig.7)

Osservazioni:
- per poter essere utilizzate nei calcoli, le date vengono memorizzate come numeri seriali in sequenza. Per impostazione predefinita 1 gennaio 1900 è il numero seriale 1 e 1 gennaio 2010 è il numero seriale 40179 essendo trascorsi 40.179 giorni dal 1 gennaio 1900.
- se uno degli argomenti non è una data valida, la funzione restituirà il valore di errore #VALORE!.
- se data_iniziale in combinazione con giorni indica un numero non valido la funzione restituirà il valore di errore #NUM!.
- se giorni non è un numero intero, la parte decimale verrà troncata.

La funzione GIORNO.LAVORATIVO esegue il calcolo escludendo sia il sabato sia la domenica in quanto giorni non lavorativi. Volendo includere il sabato come lavorativo, occorre utilizzare formule più complesse come le seguente:

 =PICCOLO(SE(CONTA.SE(F$1:F$100;RIF.RIGA(INDIRETTO($A2+1&":"&A2+B2+100)))=0;SE(GIORNO.SETTIMANA(RIF.RIGA(INDIRETTO($A2+1&":"&$A2+B2+100));3)<6;RIF.RIGA(INDIRETTO($A2+1&":"&$A2+B2+100))));B2)
 

Per ovviare a calcoli più complicati (vedi sopra) nella versione 2010 di Excel è stata aggiunta la nuova funzione GIORNO.LAVORATIVO.INTL(…) che consente un più articolato uso dei giorni non lavorativi.

*******-*******

GIORNO.LAVORATIVO.INTL(data_iniziale; giorni; [festivi]; [vacanze])

Funzione introdotta con la versione 2010 di Excel.

Oltre agli argomenti della funzione precedente, nella sintassi della funzione è stato aggiunto un quarto argomento:
- festivi (facoltativo): indica i giorni della settimana considerati festivi e quindi non lavorativi. Festivi rappresenta un numero di festività (fig.8) o una stringa che indica i giorni festivi.


(fig.8)

I valori delle stringhe festivi contengono sette caratteri, ognuno dei quali rappresenta un giorno della settimana, partendo da lunedì. 1 rappresenta un giorno non lavorativo, mentre 0 un giorno lavorativo. La stringa accetta solo i caratteri 1 e 0. Se si utilizza “1111111”, verrà restituito sempre 0. Invece “0000001” computerà come risultato festivo la sola domenica. Vedi gli esempi di fig.9:


(fig.9)

Osservazioni:
- se data_iniziale in combinazione con scostamento giorni indica un numero non valido, la funzione restituirà il valore di errore #NUM!.
- se una stringa festivi presenta una lunghezza non valida o contiene caratteri non validi, la funzione restituirà il valore di errore #VALORE!.


Un interessante punto di vista sull'argomento è stato sviluppato dall'amico Marco che cito testualmente:

Come molti utenti sapranno, Excel permette di creare delle funzioni personalizzate.
 Io ho creato alcune nuove funzioni inerenti soprattutto alle operazioni con le date ed in particolar modo una riottimizzazione della funzione " GiorniLavorativi" con il calcolo in automatico della data della Pasqua, delle festività,
 dei sabati e delle domeniche, compresi tra una data iniziale ed una finale.
Le nuove funzioni sono liberamente scaricabili dalla mia pagina:
http://www.marcosroom.it/Didatticando/Tra_I_Numeri/nuove_funzioni_excel_vba.aspx
 Ci sono anche dei video tutorial che spiegano in maniera dettagliata l'utilizzo delle nuove funzioni, il procedimento per creare nuove funzioni ed il procedimento per la modifica dei componenti aggiuntivi di Excel.

Grazie a Marco per la collaborazione.
 


Come già specificato le funzioni GIORNI.LAVORATIVI.TOT(...) e GIORNO.LAVORATIVO(...) sono disponibili dalla versione 2000 di Excel, mentre GIORNI.LAVORATIVI.TOT.INTL(...) e GIORNO.LAVORATIVO.INTL(...) sono state aggiunte con la versione 2010.

Allegati:
FileDescrizioneDimensione del File
Scarica questo file (Giorni lavorativi.xlsx)Giorni lavorativi.xlsxContiene anche le funzioni aggiunte nella versione 2010 di Excel23 Kb
Scarica questo file (Giorni lavorativi2.xls)Giorni lavorativi2.xlsNon contiene le funzioni aggiunte nella versione 2010 perché incompatibili con il formato .xls36 Kb
Ultimo aggiornamento Giovedì 23 Agosto 2012 11:18