jueves, 17 de noviembre de 2011

Una forma sencilla para calcular el DV del RUT usando Macros en Excel

La mayoría de ustedes ya debe saber que el RUT Chileno viene con un código de control, denominado dígito verificador, que sirve para evitar engaños o errores, este dígito es el último después del guión y puede corresponder a un número del 0 al 9 o a la letra K.

Este digito se calcula mediante un algoritmo conocido como módulo 11, este algoritmo sigue la siguiente secuencia:
1°- Se toma el RUT (sin incluir el DV) de derecha a izquierda y se multiplica cada digito por 2, por 3, por 4, por 5, por 6, por 7 respectivamente y se comienza otra vez la misma secuencia si quedarán números en el RUT. Por ejemplo, si el RUT fuese 17.473.565-X, entonces:
5x2=10
7x6=42
6x3=18
4x7=28
5x4=20
7x2=14
3x5=15
1x3=3
2°- Ahora se suman los productos de las multiplicaciones, en el ejemplo sería:

10+18+20+15+42+28+14+3=150

3°- Se divide la suma de los productos por 11 y se obtiene el resto de la división. Posteriormente se le resta a 11 el resto de la división y ese será el DV, si es que este resultado fuese 10 el DV será K y si fuese 11, el DV será 0. Entonces el DV del RUT del ejemplo será:

150/11=13
13X11=143
150-143=7
11-7=4 à Este es el Dígito verificador, por lo tanto el RUT completo será 17473565-4.

Si a futuro se desempeñan por ejemplo en empresas comerciales, deberán verificar que el RUT de sus clientes (personas y/o empresas) sea veraz, pero realizar este proceso de forma manual les resultará en extremo engorroso, por lo mismo es que a continuación les mostraré como utilizar macros de Excel para obtener el dígito verificador de un RUT.

Es importante destacar que en la web encontrarán muchas formas para hacer este calculo mediante Visual Basic, sin embargo he escogido esta macro en particular porque es corta y sencilla de entender.

Primero, abran una hoja de cálculo de Excel, ahí diríjanse a la pestaña de programador y abran Visual Basic (también lo pueden hacer con la forma abreviada Alt+F11). Presionen insertar y abran un nuevo módulo.
Aquí copien y peguen el siguiente algoritmo:

Public Function dvrut(rut)
' Lo unico que no acepta son letras
rut = Replace("0000" & rut, ".", "", 1) 'Se determinan los formatos del rut
If InStr(1, rut, "-") > 0 Then rut = Left(rut, InStr(1, rut, "-") - 1)
rut = Right(rut, 8) 'Ocho es la cantidad de digitos máximo del rut chileno sin contar el digito verificador
suma = 0
For i = 1 To 8
suma = suma + Val(Mid(rut, i, 1)) * Val(Mid("32765432", i, 1)) 'Se va multiplicando por posicion y empieza de 2 hasta llegar a 7 y luego se empieza de nuevo del ultimo digito al primero
Next i
dv = 11 - (suma Mod 11) 'El digito verificador será la diferencia entre once y el resto de la división
If dv = 10 Then dv = "K" 'Si el dv es 10 el digito verificador será K
If dv = 11 Then dv = 0 'Si el dv es 11 el digito verificador será 0
dvrut = dv
End Function


Ahora pueden volver a la hoja de cálculo y comprobar el funcionamiento de su macro. Para esto ingresen su RUT sin DV en una celda y posteriormente en la celda adyacente (o donde quieran situar el digito verificador) escriban “=dvrut(Celdadelrut)” (dvrut es el nombre con el que hemos nombrado la macro). Así en nuestro ejemplo con el RUT 17.473.565 introducimos “=dvrut(A1)” y el resultado del dígito verificador será 4, tal como habíamos calculado en un principio.

Si quieren tener esta útil herramienta disponible para todas sus hojas de cálculo podrán guardarla como un complemento de Excel, en Archivo, Guardar como y señalando “Complemento” en el tipo de archivo que guardan.

Posteriormente habiliten el complemento en Programador, Complementos y marcando la casilla correspondiente al complemento que guardaron (en este caso RUT).



Ahora con el complemento disponible podrán obtener el dígito verificador de forma fácil en cualquier archivo Excel.

Fuentes:

Autor: Catalina Sáez M.

10 comentarios:

  1. No sabes cuando esperé encontrar algo así!
    Tu recopilación quedó buenísima :)
    Gracias Catalina

    ResponderEliminar
  2. no funciona con rut bajo 10.000.000 y sobre 99.999.999 o hice algo mal

    ResponderEliminar
  3. Muchas gracias
    Muy Utíl =)

    ResponderEliminar
  4. Excelente el aporte.
    De verdad muy bueno, Saludos desde Chile el desarrollo es muy bueno

    ResponderEliminar
  5. cuidado con usar este calculo esta del todo mal no soy esperto pero la formula en excel es:

    En A1 coloca en nit o cedula
    en B1 coloca
    =SI(C2=0;0;SI(C2=1;1;11-C2))
    y en c1 coloca
    =RESIDUO((VALOR(EXTRAE(TEXTO(A2;"000000000000000");15;1))*3+VALOR(EXTRAE(TEXTO(A2;"000000000000000");14;1))*7+VALOR(EXTRAE(TEXTO(A2;"000000000000000");13;

    ResponderEliminar
  6. en B2 queda el dígito de Verificación

    ResponderEliminar