sábado, 16 de enero de 2016

Función personalizada en Excel: EDAD a través del RFC

Cómo parte de las actividades de comercialización, en ocasiones es necesario segmentar por edades una base de datos (cartera de clientes o prospectos). Si conocemos su RFC (Registro Federal de Contribuyentes) o su CURP (Clave Única de Registro de Población), tenemos los elementos necesarios para establecer su fecha de nacimiento y con ello su edad.

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.