Contenidos
Introducción
El cálculo del dígito verificador es una técnica utilizada para verificar la integridad de los datos, especialmente en números de identificación tributaria como el RUT chileno. En este caso, vamos a implementar una función en Excel VBA que calcule el dígito verificador para un número de RUT dado.
El Código de Ejemplo
Aquí está el código VBA que implementa la función GenDV:
Public Function GenDV(ByVal Rut As Long) As String
Dim dgv As Integer
Dim cont As Integer
Dim mlp As Integer
Dim acm As Integer
cont = 2
acm = 0
While Rut <> 0
mlp = (Rut Mod 10) * cont
acm = acm + mlp
Rut = Rut 10
cont = cont + 1
If cont > 7 Then
cont = 2
End If
Wend
dgv = 11 - (acm Mod 11)
GenDV = CStr(dgv)
If dgv = 10 Then GenDV = "K"
If dgv = 11 Then GenDV = "0"
End Function
Analizando la Función:
La función GenDV es un cálculo del dígito verificador utilizado en el contexto de los números de identificación tributaria, como el RUT chileno. Veamos en detalle cómo funciona:
Parámetros de Entrada:
- Rut: Un número entero que representa el RUT (Rol Único Tributario) sin el dígito verificador.
Variables Locales:
- dgv: Almacena el dígito verificador calculado.
- cont: Lleva la cuenta de la posición del dígito actual.
- mlp: Almacena el producto del dígito actual y el valor de cont.
- acm: Acumula la suma de los productos.
Bucle While:
El bucle se ejecuta mientras Rut no sea igual a cero. En cada iteración:
- Calcula el producto del último dígito de Rut y el valor de cont.
- Agrega este producto a acm.
- Divide Rut por 10 para eliminar el último dígito.
- Actualiza cont.
- Si cont supera 7, se reinicia a 2.
Cálculo del Dígito Verificador:
Calcula dgv como 11 menos el residuo de acm dividido por 11.
- Si dgv es igual a 10, se asigna la letra “K”.
- Si dgv es igual a 11, se asigna el dígito 0.
Resultado:
La función devuelve el dígito verificador como una cadena de texto.
En resumen, esta función toma un número de RUT, realiza cálculos específicos y devuelve el dígito verificador correspondiente. Es un ejemplo práctico de cómo se puede implementar esta lógica en un contexto específico. Recuerda que este código es un ejemplo de prueba y puede adaptarse según las necesidades reales. 😊