Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

validaciòn de RUT en Excel

3,304 views
Skip to first unread message

quincy

unread,
Jun 24, 2007, 12:59:58 PM6/24/07
to

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.

unread,
Jun 24, 2007, 1:59:02 PM6/24/07
to
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

"quincy" <quincy12...@en.gmail.com> escribió en el mensaje
news:467e...@news.vcd.cl...

quincy

unread,
Jun 24, 2007, 1:39:31 PM6/24/07
to
"Diego Styl Q." <ds...@vtr.net> wrote in
news:f5mbdo$mh8$1...@news.nivel5.cl:

> 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

unread,
Jun 24, 2007, 6:35:54 PM6/24/07
to
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.

quincy escribió:

quincy

unread,
Jun 24, 2007, 10:33:37 PM6/24/07
to
gato2006chile <gato2006ch...@gmail.com> wrote in news:f5mrlr$r5p$1
@news.nivel5.cl:

> 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

unread,
Jun 25, 2007, 12:10:47 AM6/25/07
to
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.


quincy escribió:

gato2006chile

unread,
Jun 25, 2007, 12:25:21 AM6/25/07
to
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.


quincy escribió:

Message has been deleted

Nilton P. Salazar G.

unread,
Jun 25, 2007, 8:05:13 AM6/25/07
to
gato2006chile wrote:
> 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

unread,
Jun 25, 2007, 2:16:25 PM6/25/07
to
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.

Nilton P. Salazar G. escribió:

quincy

unread,
Jun 25, 2007, 9:58:01 PM6/25/07
to
gato2006chile <gato2006ch...@gmail.com> wrote in
news:f5ng53$21i$1...@news.nivel5.cl:

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

esuare...@gmail.com

unread,
May 31, 2016, 9:30:04 AM5/31/16
to
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
0 new messages