Come calcolare il giorno di Pasqua per pianificare ferie e chiusure

di Demetrio Porcino

Pubblicato 14 Aprile 2017
Aggiornato 1 Febbraio 2022 11:51

logo PMI+ logo PMI+
Calcolo delle festività variabili per pianificare giornate lavorative, ferie o calendari: il caso esemplificativo della chiusura per Pasqua.

Il calcolo della data di una festività variabili (es.: Pasqua) può essere utile per pianificare giornate lavorative, ferie o calendari. Né Excel né Visual Basic usato per le macro hanno funzioni interne complete per semplificare il lavoro con i giorni di vacanza, quindi ogni funzione dovrà essere autonomamente pensata e realizzata per lo scopo che si ha in mente. Le date di festività fisse (es.: Natale o Ferragosto) possono essere calcolare in maniera agevole, più complicato è il discorso per le date variabili.

Calcolare una data esatta (in formato data) di un giorno festivo come Natale è semplice e si può fare semplicemente inserendo una formula come questa in una cella:

= DATE(YEAR(NOW());12;25)

Calcolare una data variabile implica il ricorso all’algoritmo esatto usato per calcolare la data stessa. Quello per il calcolo del giorno di Pasqua nel calendario gregoriano è estremamente complesso.

La definizione teorica di – “prima domenica dopo la prima luna piena seguente l’equinozio invernale” – è difficilmente trasferibile in un semplice algoritmo in quanto servirebbe la conoscenza di lune piene, equinozi e approssimazioni cicliche nel calendario gregoriano.

Ecco dunque una soluzione pratica non troppo difficile da implementare, frutto di anni di ottimizzazione e sperimentazioni per gare di programmazione.

Si possono raccomandare due metodi di calcolo della data esatta di Pasqua.

Il primo è semplicissimo da implementare e basato su funzioni interne di Excel (senza macro/VBA) e funziona per gli anni dal 1900 al 2078. Assumendo che l’anno di cui si voglia calcolare la data di Pasqua sia nella cella A1 (ad esempio di valore 2009), per calcolare la data di Pasqua basterà usare la seguente funzione:

=FLOOR(DATE(A1;5;DAY(MINUTE(A1/38)/2+56));7)-34

Per una data più precisa e che vada bene per ogni epoca temporale del calendario gregoriano e giuliano, ci si dovrà affidare a un calcolo fatto con macro VBA, come quella riportata su questo sito. Tale macro potrà essere inserita all’interno del foglio di calcolo e richiamata dove necessario per una precisione costante in ogni epoca temporale.