Calcolare l’ultimo giorno lavorativo

Quando si sviluppa un foglio di lavoro, potrebbe essere necessario conoscere l’ultimo giorno lavorativo di un determinato mese. Supponendo che i tuoi giorni lavorativi vadano dal lunedì al venerdì, la seguente formula restituirà la data desiderata:

=DATA(ANNO(A1);MESE(A1)+1;0)-(MAX(0;GIORNO.SETTIMANA(DATA(ANNO(A1);MESE(A1)+1;0);2)-5))

 

Questa formula restituisce una data che è solo dal lunedì al venerdì e sempre l’ultimo giorno del mese rappresentato dalla data in A1. Per alcuni scopi, potrebbe essere necessario sapere qual è l’ultimo venerdì di un determinato mese. Questo è facilmente determinato con questa formula:

=DATA(ANNO(A1);MESE(A1)+1;0)-GIORNO.SETTIMANA(DATA(ANNO(A1);MESE(A1)+1;0))+(GIORNO.SETTIMANA(DATA(ANNO(A1);MESE(A1)+1;0))>5)*7-1

 

Questa formula calcola l’ultimo giorno del mese per la data nella cella A1 e, in base al giorno della settimana in cui si trova tale data, sottrae il numero appropriato di giorni per restituire il venerdì precedente.

Se vuoi tenere conto delle festività, la complessità della formula diventa piuttosto elevata, abbastanza rapidamente. Per questo motivo, è meglio creare una funzione definita dall’utente (una macro) che determinerà l’ultimo giorno lavorativo e compenserà le festività.

La seguente macro restituisce una data, dal lunedì al venerdì, che rappresenta l’ultimo giorno lavorativo. La data viene confrontata con un elenco di festività (HolidayList), che dovrebbe essere un intervallo denominato nella cartella di lavoro. Se la data risulta essere un giorno festivo, il giorno lavorativo finale viene decrementato fino a quando non viene individuato un giorno adatto.

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

Si noti che sono incluse tre funzioni private. Queste funzioni vengono chiamate dall’interno della funzione LastWorkDay principale. La prima, myMatch, è un “involucro” per la formula CONFRONTA standard. Questo utilizzo è incluso a causa della richiesta gestione degli errori.

La seconda funzione, NoWeekdends, viene utilizzata per riportare una data fino al venerdì precedente se si tratta di sabato o domenica. La funzione MakeItFriday viene utilizzata per garantire che una data sia sempre un venerdì.

Per utilizzare questa funzione definita dall’utente nel tuo foglio di lavoro, puoi inserire in una cella una formula come la seguente:

=LastWorkDay(A1; HolidayList; VERO)

 

Il primo parametro (A1) è la data da valutare. Il secondo parametro (HolidayList) è un elenco facoltativo di date delle festività. Come mostrato qui, si presuppone che HolidayList sia un intervallo denominato nel foglio di lavoro. Se viene fornito questo parametro, la funzione si assicura che qualsiasi data restituita non sia nell’elenco di date in HolidayList.

Anche il parametro finale è facoltativo; può essere VERO o FALSO (Il valore predefinito, se non specificato, è FALSO). Se questo parametro è impostato su VERO, la funzione restituisce sempre l’ultimo venerdì del mese. Se questo parametro è VERO e viene fornito HolidayList, la funzione restituisce l’ultimo venerdì non festivo del mese.

 

Tags: , , , , , , , , , , , , , , , , , , ,

Ti è stato utile?