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 #36473 Nicolas Mariano 28-12-2023 13:48
Ahí verifica cantidad de números, no que sea un numero correspondiente al padron
Responder | Responder con una citación | Citar | Reportar al moderador
0 #31777 Claudio García 21-10-2021 12:55
Muchas gracias, Te felicito !!!
Responder | Responder con una citación | Citar | Reportar al moderador
0 #31790 Cdor. Jorge Vega 22-10-2021 12:55
De nada Claudio!!! Gracias por comentar!!
Responder | Responder con una citación | Citar | Reportar al moderador
0 #30859 KevinM 01-07-2021 14:07
Muchas gracias por el codigo. Funciona perfecto!
Responder | Responder con una citación | Citar | Reportar al moderador
0 #31791 Cdor. Jorge Vega 22-10-2021 12:55
De nada Kevin, gracias por comentar!!!
Responder | Responder con una citación | Citar | Reportar al moderador
+1 #9129 josemariadefeo 10-02-2015 12:23
Buenisimo! Se puede pegar en un modulo de Access 2013???
Responder | Responder con una citación | Citar | Reportar al moderador
0 #8406 jlaragon 12-11-2014 10:30
Estimados me interesa esto pero tengo excel 2010 y se me dificulta crear el proyecto PERSONAL.XLSB, la verdad que no sé como crearlo... Es posible que detallen para Excel 2010
Responder | Responder con una citación | Citar | Reportar al moderador
0 #8403 ACF 11-11-2014 19:32
Muy útil, muchas gracias Jorge. Siempre presente en la tarea cotidiana.-
Responder | Responder con una citación | Citar | Reportar al moderador
0 #8687 Cdor. Jorge Vega 14-12-2014 22:36
Muchas gracias a vos. Saludos.
Responder | Responder con una citación | Citar | Reportar al moderador
+1 #8396 Silvana 11-11-2014 15:24
Muchas Gracias! tus aportes son excelentes!!!
Responder | Responder con una citación | Citar | Reportar al moderador
0 #8688 Cdor. Jorge Vega 14-12-2014 22:37
Muchas gracias Silvana. Saludos.
Responder | Responder con una citación | Citar | Reportar al moderador
+1 #8394 marcelo adrian 11-11-2014 14:13
Contador jorge. Muy buenas tus informaciones.
Responder | Responder con una citación | Citar | Reportar al moderador
+1 #8689 Cdor. Jorge Vega 14-12-2014 22:37
Muchas gracias. Saludos.
Responder | Responder con una citación | Citar | Reportar al moderador
0 #5235 edu 03-02-2014 13:25
Muchas gracias, Jorge !!
Es un golazo!
Responder | Responder con una citación | Citar | Reportar al moderador
0 #5236 Cdor. Jorge Vega 03-02-2014 13:33
De nada Edu. Saludos.
Responder | Responder con una citación | Citar | Reportar al moderador
+1 #4245 VERO 26-07-2013 10:46
Soy nueva con visual basic y evidentemente en algún paso me estoy perdiendo, luego de pegar el codigo cual es el paso a paso?
Responder | Responder con una citación | Citar | Reportar al moderador
0 #4248 Cdor. Jorge Vega 26-07-2013 12:19
Hola. Luego de pegar el código deberías guardar los cambios realizados y ya podría probar la función en cualquier celda de Excel. Fórmula: =PERSONAL.XLSB!valid arCUIT(C2) En la celda C2 se encontraría el valor del CUIT que queremos validar. Saludos.
Responder | Responder con una citación | Citar | Reportar al moderador

Escribir un comentario

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