Un altro calendario con Openoffice

- Nota: per avere un calendario già fatto esistono i template scaricabili gratuitamente. Questo post è solo per chi vuole provare a costruirselo da solo. - 

Nell’esempio precedente abbiamo visto come si riesce a costruire con OpenOffice un calendario in cui vengono elencati semplicemente tutti i giorni, dall’alto verso il basso, con numero e giorno della settimana.

Qui vedremo invece un calendario di altro tipo: i numeri si trovano all’interno di una tabella fissa. L’ordine dei giorni della settimana è già stabilito: si parte dal lunedì e si arriva alla domenica. Il primo giorno del mese va collocato nella casella giusta. 

Serve qualche codice di programmazione? Serve una macro? No, l’effetto si può ottenere tranquillamente con le formule di Calc (il foglio di calcolo di OpenOffice, l’alternativa a Excel).

Abbiamo bisogno di una cella nella quale immettere l’anno di riferimento (esempio la A1) e una nella quale immettere il mese (ad esempio la A5).

Poi scriviamo sulla riga 2 i numeri dei giorni della settimana a partire dal 2 (lunedì) fino ad arrivare all’1 (domenica): 2-3-4-5-6-7-1. Questo perché il numero 1 di default corrisponde alla domenica, mentre noi vogliamo che la domenica sia l’ultimo giorno di ogni riga.

 

Qui i numeri sono in Arial Black per essere visibili. Un'idea più pratica è quella di lasciare tanto spazio bianco all'interno delle celle per permettere le annotazioni. Dimensioni di celle e caratteri sono facilmente personalizzabili.


A questo punto prendiamo la prima casella della tabella (C5) e scriviamo la seguente formula: 

=SE(GIORNO.SETTIMANA(DATA($A$1;$A$5;1))=C$2;DATA($A$1;$A$5;1);SE(B5="";"";B5+1))

Che significa che se il primo giorno del mese (indicato nella casella A5, riguardante l’anno indicato nella casella A1) corrisponde al giorno della settimana indicato dalla casella indicata dalla riga numero 2, allora nella cella viene inserita la data del primo giorno del mese; altrimenti, se la cella a sinistra è vuota, viene lasciata vuota; in caso contrario viene inserita la data successiva al giorno indicato dalla casella più a sinistra.

A questo punto selezioniamo la cella in questione e trasciniamo il quadratino in basso a destra per le sei celle successive della tabella, fino alla domenica. Se abbiamo fatto tutto correttamente, in ogni cella comparirà una data nel formato 01/01/2021 (se compare tre volte il simbolo cancelletto vuol dire che dobbiamo allargare la cella).

Questa è la prima riga del nostro calendario. A questo punto bisogna lavorare sulla seconda. Nella casella del lunedì della seconda settimana (C6, nel mio esempio) scriviamo:

=SE(MESE(I5+1)=$A$5;I5+1;"")

Che vuol dire che se il mese è ancora lo stesso indicato dalla casella A5 allora comparirà scritto il giorno successivo all’ultimo giorno della riga precedente.

Nella cella a fianco scriviamo una formula simile, col riferimento però alla prima cella della riga:

=SE(MESE(C6+1)=$A$5;C6+1;"")

Questa seconda casella la selezioniamo e poi estendiamo la formula fino alla fine della riga 

Poi selezioniamo tutta la riga della seconda settimana e estendiamo la formula per le quattro righe sottostanti.

A questo punto selezioniamo tutte le celle in cui abbiamo inserito le formule (sei file da sette colonne) e clicchiamo su Formatta Celle. Nella scheda Numeri inseriamo g nella casella Codice Del Formato. In questo modo invece di avere la data per esteso (01/01/2021) avremo soltanto il numero del giorno. È opportuno ritoccare anche il colore di sfondo delle celle e aggiungere una griglia usando le opzioni nella scheda bordo (bordi da tutti i lati e anche tra le celle).

Anche senza entrare in questa scheda, si può cambiare il carattere e la dimensione di tutte le scritte presenti semplicemente selezionandole tutte e agendo sull’apposita barra degli strumenti che compare in automatico.

Nella riga 4 è meglio metterci un’intestazione coi vari giorni della settimana per completare la tabella.
Che ci manca? Le domeniche devono essere segnate in rosso. A differenza dell’esempio precedente, in cui abbiamo agito con la formattazione condizionale, qui basta cliccare sulla colonna delle domeniche (nel mio caso la I), cliccare su Formatta Celle e agire sul colore del testo.

Questa tabella adesso è completamente automatizzata. Basta cambiare il numero del mese nella casella A5 e i giorni si dispongono in maniera differente. Il software conosce la lunghezza di ogni mese: quando il mese è 1 (gennaio), vengono stampati 31 giorni, quando è 6 (giugno) ne vengono stampati 30. Quando è 2 (febbraio) 28 o 29 a seconda che l’anno che abbiamo impostato in A1 è bisestile o no.

Sarebbe bello se si potessero ottenere gli altri mesi col copia-e-incolla, ma purtroppo questo non è possibile. Infatti, per estendere rapidamente i dati a tutte le caselle ci ho messo varie $ che fissano il riferimento alla casella indicante il mese.

Quindi se uno copia e incolla l’intero gruppo di celle e cambia il numero del mese, ottiene sì che i giorni del mese si dispongono nella maniera corretta, ma che la durata del mese non è quella giusta: se nella casella a5 scriviamo 1 (gennaio) i giorni saranno 31 anche se nella tabella derivata sono disposti come nel mese di febbraio (ma in realtà la data retrostante è quella di gennaio).

Come si corregge quest’inghippo? Il metodo più semplice è quello di ritoccare a mano le formule per ciascun mese, eseguendo di nuovo le operazioni già compiute con i nuovi riferimenti alla nuova cella indicante il mese. Si tratta di un lavoro ripetitivo, ma il lato positivo è che va fatto una sola volta: una volta messo a punto, per ottenere i calendari degli anni successivi basterà semplicemente cambiare il numero nella casella dell’anno e tutti i giorni verranno disposti in automatico nella maniera corretta.

Il metodo più complicato invece è... spremersi le meningi e inventare una procedura migliore! (se uno ne è capace).

Manca qualcosa al nostro calendario? Sicuro! Al momento sono segnate in rosso soltanto le domeniche ma non le altre festività (Capodanno, Natale, Ferragosto, Pasquetta...). Per ottenere quest’effetto bisogna procedere con la formattazione condizionale, come spiegato nell’esempio precedente. Si potrebbe pensare di colorarle a mano: a parte la Pasquetta, tutte le altre cadono in una data fissa. Colorare la data del sei gennaio una volta vale per tutte, o no? No, perché visto che ogni mese inizia con un diverso giorno della settimana, il giorno 6 non capita sempre nella stessa casella. A volte capita di lunedì, a volte di venerdì... Quest’anno l’Epifania cade nella settimana successiva a quella dell’inizio dell’anno, il mercoledì. Se la coloro di rosso a mano, e poi cambio il numero dell’anno per ottenere il calendario dell’anno prossimo, sarà sempre il mercoledì ad essere colorato di rosso, ossia il 5 gennaio 2022. Nel 2023 sarà il 4 gennaio ad essere colorato di rosso.

Insomma, colorare a mano il giorno non è una buona idea. L’informatica è bella perché permette di automatizzare queste operazioni. Si fa un po’ di fatica il primo anno, ma poi i passaggi successivi sono immediati (sempre che non si voglia ricorrere a un template già fatto, e allora anche il primo anno la parte tecnica è bella e pronta e ci si può concentrare soltanto sull’aspetto grafico, immagini, colori, ecc.).

Commenti

Post più popolari