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
Suscripción de noticias RSS para comentarios de esta entrada.