¿Como saber el Dígito Verificador del 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!
16 comentarios
Excelente!!!!!!
Gracias por tu aporte.
Nos alegra que te haya servido, gracias por comentar.
genial!!!! gracias
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 😉
hola, no se en que puedo estar fallando, no me funciona y me arroja el mensaje ¿NOMBRE? si alguien me puede ayudar por favor?
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)
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.
Gracias a ti por tu aporte Ernesto!
Muy buena la rutina, muchas gracias.
me sirvió mucho .. muchas gracias
Es de mucha ayuda. Mil gracias
muchisimas gracias!! gran aporte
hola consulta tengo una planilla excel con los rut listo con guion y todo y necesito saber cuantos de estos son con digito verificador K, pero no se que formula utilizar
Hola, si utilizas la segunda te indicara si el rut es correcto o no
Hola, la segunda versión no me funciona:
141560859
=Valdvrut(G4)
Resultado: Incorrecto
Hola, para que funcione el rut debe tener guion (14156085-9)