Robert ama lavorare sulla genealogia. A volte, quando trova un cimitero più vecchio, invece delle date di nascita e morte visibili su una lapide, è visibile solo una data e un’età. Ad esempio, “nato: 18 gennaio 1801, morto 81 anni, 11 mesi, 17 giorni” o “età: 93 anni, 8 mesi, 22 giorni, morto il 18 marzo 1901”. Robert si chiede se c’è un modo per calcolare la data mancante al giorno.

C’è un modo per farlo, ma non implica l’uso di normali funzioni del foglio di lavoro. Sebbene Excel includa un ricco assortimento di funzioni del foglio di lavoro che consentono di modificare le date, la “data di base” per Excel è il 1 ° gennaio 1900; questa è la data da cui vengono calcolate tutte le date. (È possibile modificare la data di base, ma solo di quattro anni, in 1904. Questa funzionalità viene fornita per compatibilità con Excel su Mac.) Ciò significa che le date più vecchie, come quelle che si troveranno nel cimitero per scopi genealogici essere calcolato direttamente in Excel.

Fortunatamente, VBA non ha questa limitazione. Ciò significa che puoi facilmente creare una funzione definita dall’utente (una macro) che farà i conti per te. Inizia inserendo la data di inizio (data di nascita o di morte)

nella cella B1. Quindi, nelle celle B2: B4 inserisci il numero di anni, mesi e giorni entro i quali desideri modificare la data di inizio. Pertanto, se B1 contiene una data di nascita, le celle B2: B4 dovrebbero essere positive (si desidera aggiungerle alla data di inizio). Se B1 contiene una data di morte, B2: B4 dovrebbe essere negativo (devi sottrarli dalla data di inizio).

Quindi, crea questa macro:

Function FindDate(Start As Date, iYrs As Integer, _   iMths As Integer, iDays As Integer)



Application.Volatile     Dim D As Date

D = DateAdd("yyyy", iYrs, Start)

D = DateAdd("m", iMths, D)

D = DateAdd("d", iDays, D)



FindDate = Format(D, "m/d/yyyy")

End Function

In qualunque cella tu voglia visualizzare la data calcolata puoi inserire la seguente formula:

=FindDate(B1,B2,B3,B4)

Il risultato della funzione è una data formattata che rappresenta la data di inizio rettificata dagli anni, mesi e giorni specificati. Quindi, se la cella B1 contiene 1/18/1801, la cella B2 contiene 81, la cella B3 contiene 11 e la cella B4 contiene 17, la funzione restituirà 1/4/1883. Allo stesso modo, se la cella B1 contiene 3/18/1901, la cella B2 contiene -93, la cella B3 contiene -8 e la cella B4 contiene -22, il risultato restituito sarà 6/26/1807.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (12277) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.

È possibile trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: Tombstone Date Math.