En Excel existen diferentes funciones preestablecidas con las que podemos trabajar estos cálculos, particularmente yo recurrí por un tiempo a la siguiente:
Como vemos, es una fórmula relativamente extensa , que si se aplica con frecuencia, la lógica nos indica que deberíamos crear nuestra propia función y así simplificar el trabajo. Fue así que me decidí por hacerla y en las siguientes líneas escribo el código de Visual Basic.
Function EDAD(RFC As String) As Integer
'
' EDAD Macro
' Calcula la edad a partir del RFC o CURP del cliente
'
Dim fecha As Date
Dim anio As String
Dim DIA As String
Dim MES As String
hoy = DateValue(Now)
current = Year(hoy) - 2000
DIA = Mid(RFC, 9, 2)
MES = Mid(RFC, 7, 2)
If Val(Mid(RFC, 5, 2)) < current Then
anio = Val(Mid(RFC, 5, 2)) + 2000
Else
anio = Val(Mid(RFC, 5, 2)) + 1900
End If
fecha = DIA & "/" & MES & "/" & anio
EDAD = Int(DateDiff("d", fecha, hoy) / 365.25)
End Function
En donde RFC, es una celda que contiene una secuencia de valores alfanum éricos y cuyos primeros 10
dí gitos son del tipo ABCD650123, tanto para el caso del RFC como de la CURP.
, el resultado es una función con una sintaxis sumamente sencilla:
=EDAD(Celda_RFC_o_CURP)
Con lo que nuestra celda luce ahora así:
Para descargar el archivo con la función personalizada pulsa aquí.
También elaboré un pequeño tutorial para su instalación el cual puedes descargar dando click aqui.
Espero que les sea de utilidad, ya que puede ser explotado en diversas áreas.
Buenos días, gracias por compartir, pero la Function EDAD tiene un detalle realiza un calculo erróneo de los años de nacimiento a partir del 2017 , podrías revisarla y compartir la solución
ResponderBorrarHola Fabian, gracias por escribir. Ya hice la corrección de la macro.
BorrarTe agradecería mucho si la puedes probar.
Saludos
Gracias, para el caso de los CURP de personas mayores a 100 años, por ejemplo
BorrarCEZU180702MYNHVS08 me marca erróneo la edad, podrías revisar por favor
Hola Fabian, a partir de la información que contiene la CURP, no existe forma de saber si se trata de una persona con más de 100 años. Esos casos se resuelven manualmente, o en su defecto, si trabajas mayoritariamente con información de adultos mayores, podrías ajustar la macro.
BorrarSaludos.
Muchas gracias por tu valioso contenido y por tu tiempo, gracias por compartir tu conocimiento. Es correcto.
BorrarMuchas Gracias por compartir
ResponderBorrar