Regularizar la columna que contiene el RUT

Tengo una base que completan los usuarios y debo regularizar la columna E que contiene el RUT (DNI en Chile) y lo ingresan con puntos, guiones o sin ellos, no han tenido la precaución de hacerlo en forma ordena, bueno mi tema es que debo dejarlo con 10 dígitos sin ningún carácter especial, solo números y como en chile el dígito verificador puede ser K, también debe permitirla.
Estoy usando esta subrutina

Sub arreglar()
ActiveCell.Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Select
ActiveCell = Replace(ActiveCell, "-", "")
ActiveCell = Replace(ActiveCell, ".", "")
ActiveCell.NumberFormat = "@"
ActiveCell = Format(ActiveCell, "0000000000")
ActiveCell.Value = ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Pero los RUT que teRminan en K, no son regularizados
Además sin tener que usar un formulario como puedo validar que al presionar Enter o moverse de celda lo ingresado quede "0000000000" sin ningún carácter especial?

2 Respuestas

Respuesta
1

Prueba con la siguiente macro, te va a cambiar cualquier carácter que no sea número o la letra k, no requiere el formato "000000000"

Sub rep()
'por.dam
ActiveCell.Select
Do While Not IsEmpty(ActiveCell)
    v = ActiveCell
    ks = 0
    r = v
    For i = 1 To Len(v)
        n = Val(Mid(v, i, 1))
        l = Mid(v, i, 1)
        If Not IsNumeric(l) Then
            If l <> "k" And l <> "K" Then
                r = Replace(r, l, "")
            Else
                If ks = 0 Then
                    ks = 1
                Else
                    r = Replace(r, l, "")
                End If
            End If
        End If
    Next
    ActiveCell.Value = "'" & Right("0000000000" & r, 10)
    ActiveCell.Offset(1, 0).Select
Loop
End Sub

Saludos.Dam
Si es lo que necesitas.

Gracias sí funciona!!, lo que es saber

ahora como puedo hacer para que esa subrutina se ejecute cada vez que el usuario escribe en el celda, y se cambie con Enter, TAB, o flechas?

sólo para evitarme regularizar la columna cada cierto tiempo

Sigue las Instrucciones para poner la macro en worksheet
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
4. Del lado derecho copia la macro

Private Sub Worksheet_Change(ByVal Target As Range)
'por.DAM
If Not Intersect(Target, Columns("B")) Is Nothing Then
    v = Target.Value
    ks = 0
    r = v
    For i = 1 To Len(v)
        l = Mid(v, i, 1)
        If Not IsNumeric(l) Then
            If l <> "k" And l <> "K" Then
                r = Replace(r, l, "")
            Else
                If ks = 0 Then
                    ks = 1
                Else
                    r = Replace(r, l, "", , 1)
                End If
            End If
        End If
    Next
    Application.EnableEvents = False
    Target.Value = "'" & Right("0000000000" & r, 10)
    Application.EnableEvents = True
End If
End Sub

Cambia en la macro, la columna donde tienes el RUT, si lo tienes en la columna “D”, en la macro debería quedar así
If Not Intersect(Target, Columns("D")) Is Nothing Then
Utiliza la primer macro para hacer el cambio en toda la columna. La macro 2 estará corrigiendo en automático cada vez que capturen un RUT.

Saludos. Dam
Si es lo que necesitas.

Respuesta

Publicamos regularmente oportunidades de financiación y becas en Francia. Si está registrado en nuestra lista de correo, debe recibirlos si aún no está registrado, regístrese de manera gratuita y comience a recibir nuestros mensajes que contienen las ofertas de financiamiento y becas en Francia. Los criterios para obtener una beca en Francia son varios. Para poder solicitar ofertas de becas en Francia y obtener una beca, generalmente debe ser un estudiante de tiempo completo en una universidad en su país, luego debe solicitar y obtener una admisión confirmada de una universidad en Francia. Estas son las dos condiciones que se deben cumplir primero y luego cumplir con las condiciones específicas de cada oferta. Para solicitar la admisión a las universidades francesas, solo necesita conocer los planes de estudios de las universidades y completar el formulario de solicitud en línea, luego pagar los aranceles de admisión que varían de una escuela a otra. Para obtener más información, escríbanos a: [email protected]
Por whatsapp: +4915216742815Publicamos regularmente oportunidades de financiación y becas en Francia. Si está registrado en nuestra lista de correo, debe recibirlos si aún no está registrado, regístrese de manera gratuita y comience a recibir nuestros mensajes que contienen las ofertas de financiamiento y becas en Francia. Los criterios para obtener una beca en Francia son varios. Para poder solicitar ofertas de becas en Francia y obtener una beca, generalmente debe ser un estudiante de tiempo completo en una universidad en su país, luego debe solicitar y obtener una admisión confirmada de una universidad en Francia. Estas son las dos condiciones que se deben cumplir primero y luego cumplir con las condiciones específicas de cada oferta. Para solicitar la admisión a las universidades francesas, solo necesita conocer los planes de estudios de las universidades y completar el formulario de solicitud en línea, luego pagar los aranceles de admisión que varían de una escuela a otra. Para obtener más información, escríbanos a: [email protected]
por whatsapp: +4915216742815

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas