Calndario in una pagina per il 2023

Excel: calendario su una sola pagina

by

Grazie a un articolo su Bigthink.com ho scoperto una forma compatta di calendario, con tutti e dodici i mesi in un unico riquadro.

 Il funzionamento è abbastanza semplice: se voglio sapere che giorno della settimana è il 23 novembre, traccio una linea verticale nella colonna che contiene Novembre, una linea orizzontale nella riga che contiene il 23 e al punto di incrocio trovo 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. Peccato che vada adattato di anno in anno.
Neanche troppo complicato, peraltro: al primo di gennaio 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.

Un foglio di calcolo consente poi di verificare che in un anno possono esserci al massimo tre mesi che cominciano con lo stesso giorno della settimana. 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:

Layout del calendario su una sola pagina

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:

Identificare le celle che contengono i mesi

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:

Calcolo dell'indice di ciascun mese

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 d 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.

E come sarà in 2024?

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

Calendario in una sola pagina: il 2024

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

Chi fosse interessato al file può scaricarlo da qui, per entrambi i formati LibreOffice Calc ed Excel.

La foto di apertura è di Andreas Lischka da Pixabay.

Pasquale

Dopo innumerevoli anni da informatico, tra Ivrea e Milano, finalmente a riposo sulle rive del lago di Lecco. Scrivimi a: 70plus@libero.it