Excel: contare i giorni che mancano ad un compleanno
28 luglio 2009Un amico che lavora in caserma ha il gravoso compito
di tener traccia dei compleanni e di inviare ai festeggiati i biglietti d’auguri. Mi chiede quindi se in Excel è possibile fare qualcosa di utile.
Come no!
Excel fornisce alcune funzioni di calcolo per le date ma nessuna di queste funzionava in modo simile a come volevo io. Prima di tutto impostiamo in Excel la tabella dei dati.

Fatto? Fatto! Nell’immagine sopra è possibile vedere, oltre alla fantasia nella creazione dei nomi, la formula usata per calcolare il numero dei giorni mancanti. La formula è:
=RESTO(ARROTONDA.PER.DIF(DATA(ANNO(OGGI());MESE(D4);GIORNO(D4))-OGGI();0);360)
L’unica cosa da cambiare è il riferimento alla cella D4, che deve essere la data rispetto alla quale calcolare il numero di giorni mancanti. Una volta scritta la formula per la prima cella della tabella, facciamo click sulla cella, premiamo e teniamo premuto sul quadratino in basso a destra della cella stessa e trasciniamolo fino all’ultima riga della tabella, quindi rilasciamo il pulsante del mouse. La formula è stata copiata su tutte le righe cambiando di volta in volta il riferimento alla cella su cui viene effettuato il calcolo.
A questo punto vogliamo che i compleanni imminenti appaiano in alto nella tabella. Usiamo la funzione di ordinamento di Excel.
Clicchiamo su una qualsiasi delle celle che contiene il numero di giorni mancanti. Poi nel ribbon Home selezioniamo “Ordina e filtra” e quindi “Ordina dal più piccolo al più grande”. Tranquilli, l’ordinamento non mischia i dati nella tabella, non ci troveremo Mario Rossi col compleanno di Paolo Verdi!

A questo punto sarebbe davvero comodo fare che ogni volta che apriamo il file di Excel la tabella fosse automaticamente ordinata. Questo è un lavoro da affidare alle macro. Prima di tutto salviamo il file con supporto alle macro (v. figura qui sotto).

Adesso sulla tastiera battiamo ALT+F11 per aprire l’editor di VBA. Sulla sinistra, facciamo doppio click su ThisWorkBook. Dalla finestra del codice selezioniamo nella casella di riepilogo sinistra Workbook, e in quella destra Open. Il codice VBA da incollarci è:
Private Sub Workbook_Open()
ActiveWorkbook.Worksheets("Foglio1").Activate
Range("D4").Select
Selection.Sort Key1:=Range("D4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Le eventuali modifiche da fare sono solo due: invece di D4 bisogna scrivere la cella su cui applicare l’ordinamento (nel mio caso D4 è la prima casella che contiene i giorni calcolati mancanti al compleanno) e invece di Foglio1 bisogna scrivere il nome del foglio su cui è stata creata la tabella.
Quando si riapre il file Excel può visualizzare un avviso di protezione riguardante la presenza di macro. In tal caso basta cliccare sul pulsante Opzioni della barra dell’avviso e confermare che siamo sicuri del contenuto della cartella di lavoro, e la tabella sarà ordinata come programmato.

Abbastanza chiacchiere, ecco il file: Compleanni (168)
(l’archivio zippato contiene lo stesso file sia in versione Excel 2007 che versione Excel 2003, quest’ultima è stata creata da Excel 2007 quindi non posso essere sicuro al 100% che funzioni a dovere su versioni di Excel precedenti alla 2007)
complimenti, ottima guida!!!! mi è stata utilissima….
Nilson
Prego
scusate ma io credo di essere proprio negata con questo programma…però mi serve per il lavoro…sapreste dirmi perchè, invece di calcolarmi i giorni mancanti, mi esce sempre 0?? =(
Grande!