A Robert le encanta trabajar en genealogía. A veces, cuando encuentra un cementerio más antiguo, en lugar de que las fechas de nacimiento y muerte sean visibles en una lápida, solo se ve una fecha y una edad. Por ejemplo, «nació: 18 de enero de 1801, murió 81 años, 11 meses, 17 días» o «edad: 93 años, 8 meses, 22 días, murió el 18 de marzo de 1901». Robert se pregunta si hay alguna forma de calcular la fecha que falta en el día.

Hay una forma de hacer esto, pero no implica el uso de funciones regulares de la hoja de trabajo. Si bien Excel incluye una amplia variedad de funciones de hoja de trabajo que le permiten manipular fechas, la «fecha base» para Excel es el 1 de enero de 1901; esta es la fecha a partir de la cual se calculan todas las fechas. (Puede cambiar la fecha base, pero solo por tres años, a 1904. Esta capacidad se proporciona para compatibilidad con Excel en Mac.) Esto significa que las fechas más antiguas, como las que encontraría en el cementerio para propósitos de genealogía, pueden No se calculará directamente en Excel.

Afortunadamente, VBA no tiene esta limitación. Esto significa que puede crear fácilmente una función definida por el usuario (una macro) que hará los cálculos por usted. Comience colocando la fecha de inicio (ya sea fecha de nacimiento o muerte)

en la celda B1. Luego, en las celdas B2: B4 ingrese la cantidad de años, meses y días en los que desea ajustar la fecha de inicio. Por lo tanto, si B1 contiene una fecha de nacimiento, las celdas B2: B4 deberían ser positivas (desea agregarlas a la fecha de inicio). Si B1 contiene una fecha de fallecimiento, entonces B2: B4 debería ser negativo (desea restarlos de la fecha de inicio).

Luego, crea esta 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

En cualquier celda en la que desee mostrar la fecha calculada, puede ingresar la siguiente fórmula:

=FindDate(B1,B2,B3,B4)

El resultado de la función es una fecha formateada que representa la fecha de inicio ajustada por los años, meses y días que especifique. Entonces, si la celda B1 contiene 1/18/1801, la celda B2 contiene 81, la celda B3 contiene 11 y la celda B4 contiene 17, la función devolverá 1/4/1883. Del mismo modo, si la celda B1 contiene 18/3/1901, la celda B2 contiene -93, la celda B3 contiene -8 y la celda B4 contiene -22, el resultado devuelto será 26/6/1807.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (5896) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

enlace: / excelribbon-Tombstone_Date_Math [Tombstone Date Math].