Funcion para calcular el Digito verificador en EXCEL

Share on facebook
Share on twitter
Share on whatsapp
Share on telegram

¿Como saber el Dígito Verificador del Rut?

Valida-Rut

Public Function dvrut(rut)
rut = Replace("0000" & rut, ".", "", 1)
If InStr(1, rut, "-") > 0 Then rut = Left(rut, InStr(1, rut, "-") - 1)
rut = Right(rut, 8)
suma = 0
For i = 1 To 8
suma = suma + Val(Mid(rut, i, 1)) * Val(Mid("32765432", i, 1))
Next i
dv = 11 - (suma Mod 11)
If dv = 10 Then dv = "k"
If dv = 11 Then dv = 0
dvrut = dv
End Function

Para agregarla debemos ir a Programador->VisualBasic.. en la columna de la izquierda sobre la carpeta que dice modulos botón derecho->insertar->modulo. Sobre la ventana que se abre hay que copiar el código anterior y guardamos.

En nuestra hoja de Excel debemos escribir =dvrut(CELDA)  y nos dara el digito verificador..

Si quieres algo mas directo que te diga inmediatamente si esta correcto o incorrecto utiliza esta versión del código:

 

Public Function dvrut(rut)
arut = UCase(rut)
rut = Replace("0000" & rut, ".", "", 1)
If InStr(1, rut, "-") > 0 Then rut = Left(rut, InStr(1, rut, "-") - 1)
rut = Right(rut, 8)
suma = 0
For i = 1 To 8
suma = suma + Val(Mid(rut, i, 1)) * Val(Mid("32765432", i, 1))
Next i
dv = 11 - (suma Mod 11)
If dv = 10 Then dv = "K"
If dv = 11 Then dv = 0
If Right(arut, 1) = CStr(dv) Then dvrut = "Correcto"
If Right(arut, 1) <> CStr(dv) Then dvrut = "Incorrecto"
End Function

 

Con este código escribirá “Correcto” o “Incorrecto” según corresponda.

Suerte!

 

 

José Miguel Concha Parra

José Miguel Concha Parra

11 Responses

  1. Muchas gracias habia estado luchando hace bastante tiempo, y no sabia usar bien las planillas de calculos (programas), me sirvió mucho para mis calculos e identificacion, agradecidos por ser solidarios y compartir algo que los programadores son reacios a cooperar 😉

    1. Hola Luis,
      Estas usando la primera o segunda versión del código? De todas maneras pareciera que hay un problema con la referencia a la celda. Recuerda que para utilizar la función debes usar =dvrut(Celda va Aqui)

  2. Muchas gracias por tu gran macro.

    La estaba adaptando a Access y estoy usando la primera versión, porque empotraré la validación misma del RUT en el evento BeforeUpdate de mi formulario. Sin embargo, tuve que anteponer lo siguiente para usar la macro con declaraciones explícitas:

    Dim Suma As Integer
    Dim i As Integer
    Dim dv As Variant

    Gracias, y te seguiré con más trucos de VBA.

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *