Discussion:
validaciòn de RUT en Excel
(demasiado antiguo para responder)
quincy
2007-06-24 16:59:58 UTC
Permalink
necesito ayuda, orientaciòn o algo asì:
quiero agregar una columna con el numero de RUT a una planilla Excel en
uso;

mi interès es que en las celdas de la planilla respectiva funcione una
fórmula que valide el RUt luego de digitarlo,,,
dado que, posteriormente, voy a enlazar esa planilla con una base de datos
màs antigua (fue hecha con Clipper 2, si mal no recuerdo, hace 12 años)
cuya informaciòn incluye el RUT verificado como 'dato clave' para la
indexaciòn; y ambas, la planilla y la basededatos se refieren al mismo
universo de personas , obvio, con la diferencia que aquèlla tiene personas
que no fueron ingresadas a èsta última

o tb. podrìa ser que ingrese los dìgitos enn forma correlativa hasta antes
del guion, y que la fòrmula calcule el DV y lo coloque en otra columna
adyacente a la derecha,,,

se me ocurre, pero...


graxs, si
Diego Styl Q.
2007-06-24 17:59:02 UTC
Permalink
Sirve.

Validar RUT!
Excel
Function dv(a)
j = 2
For i = 0 To Len(a) - 1
aux = aux + Val(Mid$(a, Len(a) - i, 1)) * j
If j > 6 Then
j = 2
Else
j = j + 1
End If
Next i
aux1 = 11 - (aux Mod 11)
If aux1 < 10 Then
dv = aux1
Else
dv = "K"
End If
End Function

Bye
Post by quincy
quiero agregar una columna con el numero de RUT a una planilla Excel en
uso;
mi interès es que en las celdas de la planilla respectiva funcione una
fórmula que valide el RUt luego de digitarlo,,,
dado que, posteriormente, voy a enlazar esa planilla con una base de datos
màs antigua (fue hecha con Clipper 2, si mal no recuerdo, hace 12 años)
cuya informaciòn incluye el RUT verificado como 'dato clave' para la
indexaciòn; y ambas, la planilla y la basededatos se refieren al mismo
universo de personas , obvio, con la diferencia que aquèlla tiene personas
que no fueron ingresadas a èsta última
o tb. podrìa ser que ingrese los dìgitos enn forma correlativa hasta antes
del guion, y que la fòrmula calcule el DV y lo coloque en otra columna
adyacente a la derecha,,,
se me ocurre, pero...
graxs, si
quincy
2007-06-24 17:39:31 UTC
Permalink
Post by Diego Styl Q.
Sirve.
Validar RUT!
Excel
Function dv(a)
bien, Diego, gracias . . . x anticipado a la prueba.

y, para mayor precisiòn:
èsa funciòn irìa en "la celda ùnica o en la celda de la primera columna
extra", tal como lo definì en mi post?

y,,, cuàl deberìa ser el formato especìfico de la celda???

graxs, again
gato2006chile
2007-06-24 22:35:54 UTC
Permalink
Si embargo dicha funcion solo genera el digito verificador, no tiene
ninguna integridad para verificar errores.
Debes modificarla para que el digito verificador se compare con el
ultimo caracter, y previamente debes definir como estan presentados los
datos en ambas bases.

¿12.345.678-6, 12345678-6, 123456786?
Generas el digito y compruebas que sea igual.
Post by quincy
Post by Diego Styl Q.
Sirve.
Validar RUT!
Excel
Function dv(a)
bien, Diego, gracias . . . x anticipado a la prueba.
èsa funciòn irìa en "la celda ùnica o en la celda de la primera columna
extra", tal como lo definì en mi post?
y,,, cuàl deberìa ser el formato especìfico de la celda???
graxs, again
quincy
2007-06-25 02:33:37 UTC
Permalink
Post by gato2006chile
Si embargo dicha funcion solo genera el digito verificador, no tiene
ninguna integridad para verificar errores.
Debes modificarla para que el digito verificador se compare con el
ultimo caracter, y previamente debes definir como estan presentados los
datos en ambas bases.
¿12.345.678-6, 12345678-6, 123456786?
Generas el digito y compruebas que sea igual.
ok, gato..
verè con lupa la .dbf que genera mi vieja basededatos para ver còmo se
transporta a .xls (en el programa nativo, digito los numeros y el soft
calcula, en off, y agrega el d.v.)

c reo, en todo caso, que serà + fàcil, sòlo digitar los nùmeros de la
primera parte del RUT y dejar q Excel genere el d.v.
gato2006chile
2007-06-25 04:10:47 UTC
Permalink
Ese es el problema que yo le veo: tu digitas los digitos mal y generaras
igual un rut, el digito es para comprobar que si la entrada de datos
esta bien, si lo calculas nuca sabras si el ingreso de datos esta bien.

Ejemplo: Digitaste 100000-4, siendo que querias 10001-5.

Suponiendo que usas un rut de la forma 12345678-9, puedes alterar la
funcion para que trabaje con len(rut)-2, o sea 12345678, calculas el
digito y compruebas que sea igual al ultimo caracter.
Post by quincy
Post by gato2006chile
Si embargo dicha funcion solo genera el digito verificador, no tiene
ninguna integridad para verificar errores.
Debes modificarla para que el digito verificador se compare con el
ultimo caracter, y previamente debes definir como estan presentados los
datos en ambas bases.
¿12.345.678-6, 12345678-6, 123456786?
Generas el digito y compruebas que sea igual.
ok, gato..
verè con lupa la .dbf que genera mi vieja basededatos para ver còmo se
transporta a .xls (en el programa nativo, digito los numeros y el soft
calcula, en off, y agrega el d.v.)
c reo, en todo caso, que serà + fàcil, sòlo digitar los nùmeros de la
primera parte del RUT y dejar q Excel genere el d.v.
gato2006chile
2007-06-25 04:25:21 UTC
Permalink
Ese es el problema que yo le veo: tu digitas los digitos mal y generaras
igual un rut, el digito es para comprobar que si la entrada de datos
esta bien, si lo calculas nuca sabras si el ingreso de datos esta bien.


Suponiendo que usas un rut de la forma 12345678-9, puedes alterar la
funcion para que trabaje con len(rut)-2, o sea 12345678, calculas el
digito y compruebas que sea igual al ultimo caracter.
Post by quincy
Post by gato2006chile
Si embargo dicha funcion solo genera el digito verificador, no tiene
ninguna integridad para verificar errores.
Debes modificarla para que el digito verificador se compare con el
ultimo caracter, y previamente debes definir como estan presentados los
datos en ambas bases.
¿12.345.678-6, 12345678-6, 123456786?
Generas el digito y compruebas que sea igual.
ok, gato..
verè con lupa la .dbf que genera mi vieja basededatos para ver còmo se
transporta a .xls (en el programa nativo, digito los numeros y el soft
calcula, en off, y agrega el d.v.)
c reo, en todo caso, que serà + fàcil, sòlo digitar los nùmeros de la
primera parte del RUT y dejar q Excel genere el d.v.
Nilton P. Salazar G.
2007-06-25 12:05:13 UTC
Permalink
Post by gato2006chile
Ese es el problema que yo le veo: tu digitas los digitos mal y generaras
igual un rut, el digito es para comprobar que si la entrada de datos
esta bien, si lo calculas nuca sabras si el ingreso de datos esta bien.
Suponiendo que usas un rut de la forma 12345678-9, puedes alterar la
funcion para que trabaje con len(rut)-2, o sea 12345678, calculas el
digito y compruebas que sea igual al ultimo caracter.
Pero dos ruts distintos pueden generar el mismo DV , por lo que la
verificacion no serviria :-P
Se deben comparar tanto RUT como DV.

Saludos.
gato2006chile
2007-06-25 18:16:25 UTC
Permalink
En este caso no, porque tu estas ingresando un rut el cual debes validar.

Solo tienes disponible un rut 12345678-9.

Se supone que los rut que ya estan en la base de datos ya estan
validados, luego solo la funcion de validacion es solo para entradas nuevas.
Post by Nilton P. Salazar G.
Post by gato2006chile
Ese es el problema que yo le veo: tu digitas los digitos mal y generaras
igual un rut, el digito es para comprobar que si la entrada de datos
esta bien, si lo calculas nuca sabras si el ingreso de datos esta bien.
Suponiendo que usas un rut de la forma 12345678-9, puedes alterar la
funcion para que trabaje con len(rut)-2, o sea 12345678, calculas el
digito y compruebas que sea igual al ultimo caracter.
Pero dos ruts distintos pueden generar el mismo DV , por lo que la
verificacion no serviria :-P
Se deben comparar tanto RUT como DV.
Saludos.
quincy
2007-06-26 01:58:01 UTC
Permalink
Post by gato2006chile
Suponiendo que usas un rut de la forma 12345678-9, puedes alterar la
funcion para que trabaje con len(rut)-2, o sea 12345678, calculas el
digito y compruebas que sea igual al ultimo caracter.
chuta, ya veo q voy a necesitar una neurona adicional...
de dònde saco una q estè operativa, ahora?
e***@gmail.com
2016-05-31 13:30:02 UTC
Permalink
a mi me resulto esta

Public Function moduloOnce(xlId As String) As String
Dim largo As Integer, i As Integer
Dim suma As Double, numero As Double
Dim serie As Variant
serie = Array(2, 3, 4, 5, 6, 7, 2, 3)
largo = Len(xlId)
suma = 0
For i = largo To 1 Step -1
numero = Mid(xlId, i, 1)
multiplicado = CDbl(numero) * serie(largo - i)
suma = suma + multiplicado
Next
dividido = CInt(suma / 11)
resto = suma - dividido * 11
Digito = 11 - resto
Select Case Digito
Case 1, 2, 3, 4, 5, 6, 7, 8, 9
moduloOnce = Digito
Case 10
moduloOnce = "K"
Case 11
moduloOnce = 0
End Select
End Function

Continúe leyendo en narkive:
Loading...