Imaginemos que nos han pasado un conjunto de fechas de nacimiento como este y desean que devolvamos la edad de cada persona.
La verdad es que esos meses en formato de número romano nos complican un poco el cálculo, pero podemos llegar a obtener el resultado aplicando diferentes funciones.
Empezaremos por obtener los 3 datos por separado. Para ello utilizaremos la función DIVIDIRTEXTO que nos permitirá devolver cada uno de ellos en celdas distintas.
A continuación, nos quedaremos únicamente con el dato del mes utilizando la función ELEGIRCOLS dónde indicaremos la columna de una matriz que deseamos seleccionar.
El siguiente paso es convertir ese número romano en un número utilizando la función NUMERO.ARABE.
Ahora que somos capaces de conseguir el número del mes, lo vamos a utilizar dentro de una función FECHA junto con el año y el día del mes. Para conseguir esos dos valores nos apoyaremos en las funciones TEXTODESPUES y TEXTOANTES
Para el año utilizamos TEXTODESPUES asumiendo que es lo que aparezca después del segundo guion.
Para el día utilizamos TEXTOANTES del primer guion.
En este punto lo que hemos conseguido es, simplemente, la fecha en un formato que nuestro ordenador entiende. Veamos cuantos días tiene esa persona restando a la fecha de hoy (función HOY) la fecha de nacimiento.
Finalmente vamos a calcular la edad. Como ya vimos en otro post, existen diferentes formas de calcular la edad. En este caso utilizaremos el COCIENTE de la división de los días transcurridos por 365,25-
Ahora que ya hemos creado todos los pasos podemos copiar esa fórmula en la celda B3 de forma que se calcule para todos los registros de la tabla.
Resumiendo: para realizar ese cálculo en apariencia tan simple hemos utilizado hasta 8 funciones distintas.
Curiosidad. Además de existir la función NUMERO.ARABE para convertir un número escrito en formato romano a otro de formato árabe, existe la función NUMERO.ROMANO para realizar el paso inverso. ¿Utilidad? Francamente, creo que solo como divertimento.
Esta es una de las posibles soluciones. ¿Tienes una alternativa? Déjala en los comentarios.
2 comentarios
Ned Navarrete · 3 enero 2025 a las 3:50 pm
Hola, estimado Xabi. Dado que animaste a publicar alternativas, comparto una mas.
Como se esta evaluando textos, opte por usar las funciones REGEX.
Solo reemplace el mes del texto dado en romano a su similar en arábigo(la misma lógica que usaste)
Posteriormente use la función =SIFECHA(), para calcular los años transcurridos entre la fecha inicial y final proporcionadas.
Aunque esta alternativa solo funciona si tu equipo detecta el texto en formato DD-MM-AAAA como fechas validas.(configuración regional)
=SIFECHA(REGEXREEMPLAZAR(A3:A13,»[A-Z]+»,NUMERO.ARABE(REGEXEXTRACCION(A3:A13,»[A-Z]+»))),HOY(),»Y»)
Raúl Ramos · 7 enero 2025 a las 7:34 pm
esta excelente, y no concia esta forma de utilizar la función cociente,
aquí te presento otra alternativa creo que con una función menos
=COCIENTE(
HOY()-
LET(
t;DIVIDIRTEXTO(D8;»-«);
_t1;SI.ERROR(NUMERO.ARABE(t);t);
_t2;–UNIRCADENAS(«-«;1;_t1);
_t2
);
365,25
)