Calendario su una pagina con excel

Tra pochi giorni si celebra il giorno dedicato a san Valentino, festa degli innamorati (e onomastico di mia figlia). Già, ma di che giorno della settimana cade? Martedì! Mi annuncia in un attimo il mio calendario su una pagina.
Grazie a un articolo su Bigthink.com, ho scoperto infatti una forma compatta di calendario con tutti e dodici i mesi in un unico riquadro.
Il calendario per il 2023 è riportato nell’immagine di apertura ed è di utilizzo abbastanza semplice. Esempio: che giorno della settimana è il 14 febbraio 2023? Semplice: traccio una linea verticale nella colonna che contiene Febbraio, una linea orizzontale nella riga che contiene il 14 e al punto di incrocio trovo martedì.
Confesso, non avevo bisogno di un calendario così, ma la mia passione per date e calendari realizzati su un foglio di calcolo ha avuto la meglio, e quindi ecco come realizzare il calendario su una pagina.


Lo spunto

L’articolo su Bigthink.com propone, diversamente dal solito calendario con dodici riquadri, uno per mese, una forma compatta con tutti i mesi in un unico riquadro.

Calendario su una pagina per il 2023

Come esempio di utilizzo si guardi alla data del 23 novembre 2023: tracciando una linea verticale nella colonna che contiene Novembre e una linea orizzontale nella riga che contiene il 23, al punto di incrocio si trova Thu, cioè giovedì.

Può sembrare macchinoso, ma dopo un po’ di allenamento diventa un modo veloce e compatto per portarsi dietro il calendario di un anno.
Adattarlo di anno in anno non è neanche troppo complicato, peraltro. Va solo cambiata la disposizione dei mesi nel riquadro in alto. Se si tiene conto che la durata dei mesi è costante, a parte quella di febbraio che vale 28 o 29 giorni, in tutto si potranno avere 14 disposizioni diverse per i dodici mesi: 7 per gli anni non bisestili, con gennaio che parte di lunedì, oppure di martedì, e così via fino a domenica; e 7 per i bisestili.

Si trova anche che in un anno possono esserci al massimo tre mesi che cominciano con lo stesso giorno della settimana. Per verificarlo basta calcolare la distanza in giorni di ciascun primo del mese dal primo di gennaio, utilizzando l’aritmetica modulare, con modulo 7.

A questo punto ci si può chiedere quanto sia complicato automatizzare la composizione del calendario per un generico anno, utilizzando un foglio di calcolo. Non molto, vediamo un modo per farlo.

Calendario su una sola pagina con un foglio di calcolo

Partiamo dal layout desiderato:

I due riquadri in basso (numerazione dei giorni e giorni della settimana) sono fissi. A cambiare sono l’indicazione dell’anno desiderato e la conseguente disposizione dei mesi nel riquadro in alto a destra.
Il primo passaggio necessario per l’automazione del calendario è creare un modo sintetico per indirizzare ciascuna cella di questo riquadro:

Modulo calendario

Notare l’aggiunta di una riga in cima e di una colonna a destra (con caratteri in grigio) che consentono di identificare con un indice ciascuna cella del riquadro dei mesi. Esempio: la cella che contiene maggio avrà l’indice 11 (1 + 10), mentre quella con marzo avrà indice 23 (3 + 20).

Il prossimo passo sarà quindi ricavare l’indice per ciascuno dei mesi, in base all’anno e al giorno della settimana con cui cominciano, e inserire il nome del mese nella cella corretta.

Mesi e relativi indici

Per generare gli indici relativi ai mesi viene in aiuto questa tabella:

Tabella per determinare gli indici per il posizionamento dei mesi

La seconda e terza colonna sono fisse ed elencano nome e numerazione per ciascuno dei 12 mesi dell’anno.
La terza colonna riporta il giorno della settimana con cui comincia ciascuno dei mesi, valore che coincide con l’indice di riga della tabella dei mesi. La formula per determinarlo è abbastanza semplice: vediamo quella per gennaio, cella T3:

=GIORNO.SETTIMANA(DATA($B$4;S3;1);2)

Viene cioè prima calcolata la data del primo giorno del mese, con: DATA($B$4;S3;1), la cui sintassi è DATA(anno;mese;giorno), poi si determina il relativo giorno della settimana, tra 1 e 7, con: GIORNO.SETTIMANA(data;2). Il parametro 2 serve a scegliere il particolare schema che attribuisce i valori da 1 a 7 alla sequenza lunedì, …, domenica.

Generare l’indice di colonna è un processo un po’ più creativo: questo indice vale infatti 10, 20 o 30 a seconda di quanti mesi sono stati già trovati con il medesimo indice di riga. Si fa (cella U3) con la formula:

=CONTA.SE(T$2:$T3;T3)

Vale a dire contando quanti valori uguali a quello della cella T3 sono stati già inseriti nelle celle della stessa colonna: se ne è stato già inserito uno, ad esempio, il valore restituito sarà 2.

A questo punto, cella Q3, c’è il calcolo finale dell’indice:

=10*U3+T3

Il valore è stato inserito nella colonna Q, per poter formare la corrispondenza tra indice e nome del mese nelle prime due colonne della tabella (Q2:R14).

Finalmente la disposizione dei mesi

Una semplice formula di ricerca verticale consente di inserire correttamente i mesi nel relativo riquadro. Nella cella H4, ad esempio, si inserisce la formula:

=SE.ERRORE(CERCA.VERT(H$2+$P4;$Q$2:$R$14;2;0);””)

La funzione SE.ERRORE() serve a lasciare la cella vuota se il relativo indice non compare nella tabella, mentre CERCA.VERT() cerca la corrispondenza tra l’indice e il nome del mese.


Come sarà in 2024?

Basta inserire 2024 nel gruppo di celle in alto a sinistra ed ecco il 2024:

Calendario su un foglio: il 2024

Due buone notizie: ci sarà un solo venerdì 17 (in maggio, mentre il 2023 ce ne offre 3 in febbraio, marzo e novembre) e Natale capiterà di mercoledì, cosa che dovrebbe favorire interessanti ponti.

Chi fosse interessato a utilizzare il calendario su una pagina può scaricarlo da qui, per entrambi i formati LibreOffice Calc ed Excel.

Scritto da:

Pasquale

Mi chiamo Pasquale Petrosino, radici campane, da alcuni anni sulle rive del lago di Lecco, dopo aver lungamente vissuto a Ivrea.
Ho attraversato 40 anni di tecnologia informatica, da quando progettavo hardware maneggiando i primi microprocessori, la memoria si misurava in kByte, e Ethernet era una novità fresca fresca, fino alla comparsa ed esplosione di Internet.
Tre passioni: la Tecnologia, la Matematica per diletto e le mie tre donne: la piccola Luna, Orsella e Valentina.
Potete contattarmi scrivendo a: p.petrosino@inchiostrovirtuale.it