# Formula en celda del RUT Chileno



## juanpy

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


----------



## shg

Maybe ...


 A​B​C​1​Number​Check​2​055733929​B2: =LOOKUP(11 - MOD(SUMPRODUCT({3,2,7,6,5,4,3,2}, --MID(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})3​306869574​4​477730140​5​313355381​6​722034422​7​542308443​8​693078814​9​239567355​10​564429066​11​352646547​12​314912888​13​351559519​14​99270764K​


----------



## juanpy

Ok, es es la idea...

Pero no funciona, existe en la formula caracteres "---" "," que no son propios para formulas en celda.

Alguna otra sugerencia?


----------



## shg

We have a language barrier. 

Please post some examples of what you have and what you want.


----------



## marious

Please credit Mr. Shg, he is the master of this one. I am just here as translator and trying to validate his formula.

Mr Shg your formula works let me know if I can help you translating  but based on your answer You hablas buen Espanol.

Agradezca a SHg por la creacion de esta complicada formula ya que esta funciona y produce el resultado  deseado

La he separado en partes y las he pegado debajo de tus requisitos para que la entiendas mejor.

Juanpi creo que te refieres a que signo "--" doble negativo y veo que tu has escrito "---" 3 veces negativo, si ese es el caso estas convitiendo todos los numeros  ennegativos. Doble negativo se usa para convertir texto en numero y si usas F9 para evaluar MID() te daras cuenta que efectivamente lo hace ya que las "0","5"... desaparecen.



LOOKUP(11 - MOD(SUMPRODUCT({3,2,7,6,5,4,3,2}, --MID(A3, {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})


entonces la suma de los productos es:
 14+15+36+30+48+42+0+9 = 194

SUMPRODUCT({3,2,7,6,5,4,3,2}, --MID(A3, {1,2,3,4,5,6,7,8}, 1)
- 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

MOD(SUMPRODUCT({3,2,7,6,5,4,3,2}, --MID(A3, {1,2,3,4,5,6,7,8}, 1)), 11)

- 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.
NOTES: Remember to format text in column A as TEXT if not formula will produce VALUE
Recuerde formatear los numerous d la columna A como texo sin obtendas VALUE y noe valor deseado


----------



## marious

<html><head><title>Excel Jeanie HTML</title></head><body>
  <!-- #########  Start   Created Html Code To Copy  ##########  -->
Excel WorkbookABCDEFG1NumberCheckCHECK1Sumproduct20557339299721433068695744531544777301400943653133553811653067220344222864875423084433674286930788144020923956735553391056442906661941941135264654771231491288881335155951991499270764KKSheet1
  ?
 ?
 <!-- ######### End   Created Html Code To Copy  ##########  -->
  </body></html>


----------



## juanpy

It is, but the formula does not serve, gives mistake

=LOOKUP(11 - MOD(SUMPRODUCT({3,2,7,6,5,4,3,2}, --MID(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})

[ , --MID ] -> Error​<!-- attachments --><!-- / attachments -->


----------



## marious

Juanpi no ve la foto. Puedes descargar este Add-in software en tu ordenador?



Excel Jeanie Html

Jeanie es un software q convierte la informacion de las celdas seleccionadas en tu hoja de calculo en html para poder pegarla en el blog de mrexcel. Si te fijas la respuesta q  te di antes esta creada con  Jeanie. El soft. es gratis,  lo único q tienes q hacer es una vez q selecciones lo que quieras poner en el blog es apretar el botón y luego usar CTRL+ C para copiar y CTRL+Y para pegar en el blog. Tendras q autorizar el clipboard en tu ordenador para q pegue la info del clipboard pulsando en el 3 boton arriba a  la izq (clipboard)  que esta en a barra de herramientas del editor del blog)


----------



## shg

marious, thank you for jumping in.


----------



## juanpy

Estimados,

Se que todo tienen una disposicion de oro para ayudarme, se que son master de excel y se del prestigio de este sitio,
pero lamentablemente la formula no funciona.

Trabajo en un banco por lo que no puedo descargar nada para enviarles la imagen del error que me da.

Yo trabajo con macro vba con el Excel 2010.

Primero eran la "," las que reemplace por ";" =MED(A3;1;3).

La formula la instale en la celda C2 y el RUT: "11645430" en la celda A1, pero en vez de resolver "0", resuelve #¿NOMBRE?

Ese es mi problema.

Asi la escribir:

=LOOKUP(11 - MOD(SUMPRODUCT({3,2,7,6,5,4,3,2};--MID(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})

Mucha gracias por la excelente y profesional ayuda.


----------



## juanpy

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


----------



## ITWare2008

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


----------



## johannpm

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


----------



## juanpy

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


----------



## juanpy

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.


----------



## patricioaedoh

juanpy said:


> 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


----------



## Chaskon

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))))


----------

