Seguramente, la mayoría de nosotros utilizamos Excel en forma cotidiana, pero no todos aprovechan al máximo las herramientas que el programa proporciona. En este artículo voy a explicar como crear una función personalizada que verifique la validez de un número de CUIT que le proporcionemos.

¿Cómo creamos una función en Excel?

Para crear una función, debemos escribir código en Visual Básic, con lo cual, es necesario tener algunas nociones básicas de programación, si es que nos interesa conocer el funcionamiento del código. Sin embargo, voy a tratar de explicarlo en la forma más sencilla posible y si no se entiende algo, me comentan.

Primero, abrimos Visual Básic: en Excel 2007 vamos a la pestaña programador y hacemos clic en Visual Basic; en Excel 2003 vamos al menú herramientas, macros y luego Visual Básic.

Una vez abierto el programa, tenemos dos opciones: crear la función para que esté disponible en todos los libros que utilicemos o solamente en el libro actual.

Como se observa en la imagen, en el sector izquierdo, hay tres proyectos, a nosotros nos interesa los últimos dos. Si queremos que la función esté disponible en todos los libros, debemos crear el código dentro del proyecto "PERSONAL.XLSB", y si queremos que esté disponible solamente en el libro actual lo crearemos en el proyecto "Libro1" (o el nombre que le hayamos puesto).

NOTA: para ver la ventana de proyectos debemos seleccionar la opción "Explorador de proyectos" dentro del menú ver o presionar "Ctrl + R".

Hacemos clic con el botón derecho del mouse sobre el proyecto que queramos utilizar y seleccionamos la opción "Insertar -> Módulo". Luego, dentro del módulo creado, con el nombre "Módulo1" por defecto, insertaremos el código siguiente:

Function validarCUIT(cuit As String) As Integer
    'definimos variables
    Dim verificador As Integer  'verificador es un número entero
    Dim resultado As Integer    'resultado es un número entero
    Dim mult() As Variant     'mult es una matriz de 10 números
     
    'eliminamos los guiones de la CUIT en caso de que existan
    cuit = Replace(cuit, "-", "")
    
    'Si la cantidad de dígitos es distinto a 11, la función retorna -1
    If Len(cuit) <> 11 Then
        validarCUIT = -1
        Exit Function
        'el código que sigue no se ejecuta
    End If
    
    'Asignamos valores a las variables definidas arriba
    mult = Array(5, 4, 3, 2, 7, 6, 5, 4, 3, 2)
    verificador = Right(cuit, 1)    'verificador es igual al último dígito de la CUIT
    
    For x = 0 To 9  'recorremos todos los dígitos de la CUIT y acumulamos en la variable "resultado"
        resultado = resultado + (mult(x) * Mid(cuit, x + 1, 1))
    Next
    
    'obtenemos el resto de dividir "resultado" con 11
    resultado = resultado Mod 11
    
    'restamos
    resultado = 11 - resultado
    
    If resultado = 11 Then
        'si resultado es igual a 11, cambiamos a 0
        resultado = 0
    ElseIf resultado = 10 Then
        'si resultado es igual a 10, cambiamos a 9
        resultado = 9
    End If
    
    If resultado = verificador Then
        'Si ambas variables coinciden, significa que la CUIT es válida y
        'retornamos 1
        validarCUIT = 1
    Else
        'Si la CUIT no es válida, retornamos 0
        validarCUIT = 0
    End If

End Function

Antes de probar la función nos conviene guardar los cambios realizados.

Probando la función

En nuestro ejemplo, 'validarCUIT' retornará los siguientes valores:

  • 1 : si la validación es correcta;
  • 0 : si la CUIT es incorrecta;
  • -1 : si el número de CUIT que le pasemos tiene un número de dígitos distinto a 11

En el caso de que hayamos creado la fórmula para que se encuentre disponible en todos los libros que utilicemos, debemos utilizarla  como sigue:

  A B C D
1 Fórmula Verificación CUIT Nota
2 =PERSONAL.XLSB!validarCUIT(C2) 1 20-22552520-0 CUIT Correcto
3 =PERSONAL.XLSB!validarCUIT(C3) 0 20-22552520-1 CUIT Incorrecto
4 =PERSONAL.XLSB!validarCUIT(C4) -1 20-2552520-0 Dígitos menor a once

En cambio, si decidimos crear la fórmula solamente para el libro actual, procedemos como sigue:

  A B C D
1 Fórmula Verificación CUIT Nota
2 =validarCUIT(C2) 1 20-22552520-0 CUIT Correcto
3 =validarCUIT(C3) 0 20-22552520-1 CUIT Incorrecto
4 =validarCUIT(C4) -1 20-2552520-0 Dígitos menor a once

Bueno, esto es todo, espero que les haya servido. Si lo desean pueden escribir un comentario, realizar aportes y/o sugerencias.

Comentarios

0 #893 silvia 18-11-2012 19:57
Gracias Jorge por todos tus aportes, son de mucha utilidad. Te felicito por tu pagina! saludos
Responder | Responder con una citación | Citar | Reportar al moderador
0 #886 Verónica Aldana 17-11-2012 19:12
Lo voy a aplicar en mis excels! Muchas gracias por compartirlo!
Responder | Responder con una citación | Citar | Reportar al moderador
0 #892 Cdor. Jorge Vega 18-11-2012 18:39
Gracias a vos. Saludos.
Responder | Responder con una citación | Citar | Reportar al moderador
0 #884 ivon bacaicoa 17-11-2012 09:39
Excelente aporte!
Responder | Responder con una citación | Citar | Reportar al moderador
0 #891 Cdor. Jorge Vega 18-11-2012 18:38
Gracias Ivon. Saludos.
Responder | Responder con una citación | Citar | Reportar al moderador
0 #882 Juan Carlos 17-11-2012 08:58
Muy bueno el aporte! Interesante! Muchas gracias... Ahora, una consulta: habrá alguna formula para que desde la pagina de ARBA y hacer el calculo de retenciones me lo dé directamente? Saludos, Juan.
Responder | Responder con una citación | Citar | Reportar al moderador
+2 #883 Cdor. Jorge Vega 17-11-2012 09:17
Con Excel todo se puede, no hay límites. Seguramente todas las semanas voy a ir subiendo códigos nuevos y si se me iluminan las neuronas voy a tratar de armar una función que tome datos de un sitio web. Saludos y gracias por comentar.
Responder | Responder con una citación | Citar | Reportar al moderador

Escribir un comentario

POR CONSULTAS SOBRE SUSCRIPCIONES, ESCRIBIRNOS a estudio@jorgevega.com.ar