Formula en celda del RUT Chileno

juanpy

New Member
Joined
Aug 21, 2014
Messages
17
Estimados, buenas tardes a todos.

Compañeros de este, el mejor foro de Excel.

Necesito la formula para generar el digito verificador, del RUT Chileno:

PHP:
Public Function Rut
Digito(ByVal Rut As Long) As String 
Dim Digito      As Integer
Dim Contador    As Integer    
Dim Multiplo    As Integer    
Dim Acumulador  As Integer   

Contador = 2    
Acumulador = 0    
While Rut <> 0
      Multiplo = (Rut Mod 10) * Contador
      Acumulador = Acumulador + Multiplo
      Rut = Rut \ 10
      Contador = Contador + 1
      If Contador > 7 Then
        Contador = 2
      End If
    Wend
    Digito = 11 - (Acumulador Mod 11)
    RutDigito = CStr(Digito) 
   If Digito = 10 Then RutDigito = "K" 
   If Digito = 11 Then RutDigito = "0" 
End Function

PHP:
Se procede a tomar el número de RUT de derecha a izquierda, 
multiplicando cada dígito por los números que componen la serie
 numérica 2, 3, 4, 5, 6, y 7; y sumando el resultado de estos productos.
 Si se ha aplicado la serie hasta el final y quedan dígitos por multiplicar,
 se comienza la serie nuevamente: 7 × 2 = 14,
5 × 3 = 15,
9 × 4 = 36,
6 × 5 = 30,
8 × 6 = 48,
6 × 7 = 42,
0 × 2 = 0,
3 × 3 = 9,
entonces la suma de los productos es:
 14+15+36+30+48+42+0+9 = 194
- Al número obtenido por la suma del producto de cada dígito por la 
serie ya mencionada, se le aplica módulo 11, o sea, se divide por 11
 y se determina el resto de la división:
parte entera de (194 : 11) = 17
resto de la división entera: (194 - 11 * 17) = 7
- Ahora a 11 se le resta el resto calculado antes:
11 - 7 = 4
- Al resultado final, se le convierte a una letra o número, siguiendo estas reglas:
Si el resultado es 11, el dígito verificador será 0 (cero).Si el resultado es 10, el dígito verificador será K.En otro caso, el resultado será el propio dígito verificador.Como en el ejemplo el resultado de la resta es 4, el dígito verificador es 4.

LO IMPORTANTE ES QUE SEA DIRECTO EN UNA CELDA Y NO CON MACRO

La verdad es que no me manejo muy bien con las funciones de matrices o vectores, por eso es quie recurro a ustedes.

Muchas gracias
 
Hola Juanpy,

Creo que su excel eres en castellano, si?

Sí es eso, entonces usted no puede escribir las formulas en inglés sino en castellano.
También tiene que mirar las definiciones regionales, porque lo signo de separacion de argumentos puede no ser lo ;

Perdona mi malo castellano.

Saludos.


Vândalo
 
Upvote 0

Excel Facts

Convert text numbers to real numbers
Select a column containing text numbers. Press Alt+D E F to quickly convert text to numbers. Faster than "Convert to Number"
Juanpy, la fórmula presentada por Mr. Shg funciona correctamente (formula submitted by Mr. Shg works as expected)

Debes tomar en consideración estos 3 puntos:

1. Los nombres de las funciones en español son diferentes
=BUSCAR(11 - RESIDUO(SUMAPRODUCTO({3;2;7;6;5;4;3;2}; --EXTRAE(A2; {1;2;3;4;5;6;7;8}; 1)); 11); {0;1;2;3;4;5;6;7;8;9;10;11}; {0;1;2;3;4;5;6;7;8;9;"K";0})

2. El separador de listas debe ser ";"
Debes sustituir TODAS las "," por ";"

3. Es una fórmula matricial
Para finalizar una fórmula matricial debes presionar Crtl + Shift + Enter para ingresar la fórmula

Saludos
 
Upvote 0
Johannpm,

Tu español esta genial no hay problemas

Mira cambie todo lo que me dices y nada, la formula no anda.

Ahora mira esta formula (va en la celda J6)

Code:
=11-RESTO(SUMAPRODUCTO(MED($J$4;FILA($A$1:$A$8);1)*1;{3;2;7;6;5;4;3;2});11)

Hace lo que necesito, pero, debo complementarla con es esta:

Code:
=SI(J6=10;"K";SI(J6=11;0;J6))

Pero no es la idea, pues lo que necesito es que solo en una celda se escriba el la formula y arroje el digito verificador.

Muchas Gracias a todos
 
Upvote 0
Bueno, el problema aun sigue, no puedo lograr incluir la formula

Me da errores por todos lados:

#¿NOMBRE?

Ya me di por vencido, gracias a todos por sus aportes.
 
Upvote 0
Estimados, buenas tardes a todos.

Compañeros de este, el mejor foro de Excel.

Necesito la formula para generar el digito verificador, del RUT Chileno:

PHP:
Public Function Rut
Digito(ByVal Rut As Long) As String 
Dim Digito      As Integer
Dim Contador    As Integer    
Dim Multiplo    As Integer    
Dim Acumulador  As Integer   

Contador = 2    
Acumulador = 0    
While Rut <> 0
      Multiplo = (Rut Mod 10) * Contador
      Acumulador = Acumulador + Multiplo
      Rut = Rut \ 10
      Contador = Contador + 1
      If Contador > 7 Then
        Contador = 2
      End If
    Wend
    Digito = 11 - (Acumulador Mod 11)
    RutDigito = CStr(Digito) 
   If Digito = 10 Then RutDigito = "K" 
   If Digito = 11 Then RutDigito = "0" 
End Function

PHP:
Se procede a tomar el número de RUT de derecha a izquierda, 
multiplicando cada dígito por los números que componen la serie
 numérica 2, 3, 4, 5, 6, y 7; y sumando el resultado de estos productos.
 Si se ha aplicado la serie hasta el final y quedan dígitos por multiplicar,
 se comienza la serie nuevamente: 7 × 2 = 14,
5 × 3 = 15,
9 × 4 = 36,
6 × 5 = 30,
8 × 6 = 48,
6 × 7 = 42,
0 × 2 = 0,
3 × 3 = 9,
entonces la suma de los productos es:
 14+15+36+30+48+42+0+9 = 194
- Al número obtenido por la suma del producto de cada dígito por la 
serie ya mencionada, se le aplica módulo 11, o sea, se divide por 11
 y se determina el resto de la división:
parte entera de (194 : 11) = 17
resto de la división entera: (194 - 11 * 17) = 7
- Ahora a 11 se le resta el resto calculado antes:
11 - 7 = 4
- Al resultado final, se le convierte a una letra o número, siguiendo estas reglas:
Si el resultado es 11, el dígito verificador será 0 (cero).Si el resultado es 10, el dígito verificador será K.En otro caso, el resultado será el propio dígito verificador.Como en el ejemplo el resultado de la resta es 4, el dígito verificador es 4.

LO IMPORTANTE ES QUE SEA DIRECTO EN UNA CELDA Y NO CON MACRO

La verdad es que no me manejo muy bien con las funciones de matrices o vectores, por eso es quie recurro a ustedes.

Muchas gracias

Hola! Te dejo una fórmula que utilizo bastante para validar el rut. Lo único que debes hacer es copiarla y pegarla en tu hoja de cálculo (agregando el signo igual (=)). Luego modificar la celda en donde se encuentre el rut y listo (en este caso está apuntando hacia la celda A2).

SI.ERROR(VALOR(EXTRAE("<wbr style="font-family: arial, sans-serif; font-size: 12.8px;">123456789K0";11-RESIDUO(<wbr style="font-family: arial, sans-serif; font-size: 12.8px;">SUMAPRODUCTO(EXTRAE(DERECHA(<wbr style="font-family: arial, sans-serif; font-size: 12.8px;">REPETIR("0";12)&A2;12);13-<wbr style="font-family: arial, sans-serif; font-size: 12.8px;">FILA(INDIRECTO("1:12"));1)*<wbr style="font-family: arial, sans-serif; font-size: 12.8px;">EXTRAE("234567234567";FILA(<wbr style="font-family: arial, sans-serif; font-size: 12.8px;">INDIRECTO("1:12"));1));11);1))<wbr style="font-family: arial, sans-serif; font-size: 12.8px;">;"K")

Me cuentas!
Saludos
 
Upvote 0
Hola! Hace tiempo tuve este mismo problema y armé la formula. Solo cambia los $A$1 por la celda que corresponda a tu caso

Rich (BB code):
=SI(11-(RESIDUO((SI.ERROR(EXTRAE($A$1;LARGO($A$1);1);  0)*2)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-1;1); 0)*3)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-2;1);  0)*4)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-3;1); 0)*5)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-4;1);  0)*6)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-5;1); 0)*7)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-6;1);  0)*2)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-7;1); 0)*3);11))=10; "K";  SI(11-(RESIDUO((SI.ERROR(EXTRAE($A$1;LARGO($A$1);1);  0)*2)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-1;1); 0)*3)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-2;1);  0)*4)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-3;1); 0)*5)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-4;1);  0)*6)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-5;1); 0)*7)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-6;1);  0)*2)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-7;1); 0)*3);11))=11; 0;  11-(RESIDUO((SI.ERROR(EXTRAE($A$1;LARGO($A$1);1);  0)*2)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-1;1); 0)*3)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-2;1);  0)*4)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-3;1); 0)*5)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-4;1);  0)*6)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-5;1); 0)*7)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-6;1);  0)*2)+(SI.ERROR(EXTRAE($A$1;LARGO($A$1)-7;1); 0)*3);11))))
 
Upvote 0

Forum statistics

Threads
1,224,867
Messages
6,181,481
Members
453,046
Latest member
Excelvbaexpert

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top