vicidomini.net
Blog di pubblica inutilità

Excel: contare i giorni che mancano ad un compleanno

28 luglio 2009

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

Tabella dei compleanni

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!

Ordinamento dei risultati

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

Salva con attivazione macro

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.

Attivazione macro

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)