¿Cómo quitar un dígito al lado izquierdo en toda una columna con un código de macro?

Tengo una columna la H que tiene 7 dígitos y deseo quitarle a toda la columna el primer dígito del lado izquierdo para que me queden 6 dígitos:

Antes: 0123456

Después: 123456

Respuesta
1

Podrías intentar algo así:

Sub Recortar_a_6_digitos()
Dim Celda As Range
Set Celda = Range("G2") '<-- aquí pon la primera celda con valores
Celda.Select
While Not Celda.Value = "" '<--- El algoritmo se parará cuando encuentre una celda en blanco
    Celda.Value = Right(Celda.Value, 6)
    Set Celda = Celda.Offset(1, 0)
Wend
End Sub

Hola no me funciono, la columna H tiene este formato '0000389, creo que es porque tiene la comilla adelante. Deseo quitar esa comilla y el primer cero para que me quede de 6 digitops

Me dijiste que lo tenías en la columna H
La macro que te he pasado se ejecuta en la columna G ( ups, fallo mío)

Has probado de cambiar la línea

Set Celda = Range("G2") '<-- aquí pon la primera celda con valores

por

Set Celda = Range("H2") '<-- aquí pon la primera celda con valores

El tema del apostrofe no influye, lo he probado y me funciona igual con o sin.

Hola lo tengo de esta forma:

No me funciona, los formatos estan asi: '0000389

¿Te sale algún mensaje de error o simplemente no hace nada?
¿Has probado a ejecutarla paso a paso (F8)?

No me realiza nada, la base de datos es muy grande por eso deseo hacerla con un código de macro y no con fórmulas

Es muy raro, yo tengo una hoja exactamente igual y funciona perfectamente.
¿Es posible que tengas algún problema con el editor de visual basic, o que tengas las macros deshabilitadas o algo por el estilo?
Si quieres prueba de ejectura este código:

Sub test()
MsgBox ("Hoja:" & ActiveSheet.Name & " Fila:" & ActiveCell.Row & " Columna:" & ActiveCell.Column)
End Sub

Devería devolverte un mensaje de este estilo:

Si una macro como esta no te funciona lo más probable es tengas algún problema técnico o de permisos en tu excel.

te puedo subir el archivo en alguna nube?

Ok, súbelo y le doy un vistazo.

El botón lo ejecuto en la HOJA 1 y la base de datos en HOJA 2. Esta es una prueba pero la base de datos es muy larga

Vale, visto el problema.
1º cambia el formato de la columna a texto (botón derecho, formato celdas, texto)
2º cambia la macro por esta otra ( pon el nombre de la hoja que sea )

Sub Recortar_a_6_digitos()
Dim Celda As Range
Dim NombreHoja
NombreHoja = "Hoja1"
Set Celda = Worksheets(NombreHoja).Range("H2")
While Not Celda.Value = ""
    Celda.Value = Right(Celda.Value, 6)
    Set Celda = Celda.Offset(1, 0)
Wend
End Sub

Me funciono perfectamente, quería preguntarte si me podrías ayudar a unir la columna G con la H para que me quede el numero de 9 dígitos. Esta union para colocarla en la columna I

Lo hace falta una línea más en el código.

Sub Recortar_a_6_digitos()
Dim Celda As Range
Dim NombreHoja
NombreHoja = "Hoja7"
Set Celda = Worksheets(NombreHoja).Range("H2")
While Not Celda.Value = ""
    Celda.Value = Right(Celda.Value, 6)
    Celda.Offset(0, 1).Value = CStr(Celda.Offset(0, -1).Value) & CStr(Celda.Value)
    Set Celda = Celda.Offset(1, 0)
Wend
End Sub

Me funciono perfectamente, tengo una duda es que la columna G empieza como 012, 013 y así sucesivamente. Entonces al juntar las dos columnas el 0 de primero se me borra, osea queda 12, 13

Tienes que ponerla en formato texto, igual que hiciste con la H

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas