Macro para pasar valores de horizontal a en un columna siendo la primera columna la de ide

Hola tengo la siguiente estructura de datos COLUMNA A, B, C y D

columna A datos de id, el resto es referencial de la id pero necesaria, quiero pasar a la columna E de la siguiente forma:

estructura

A B C D E

4557 M 1998 N id 4557

4558 M 1997 M M

4559 M 1997 M 1998

4560 M 1998 N N

4561 M 1997 M id 4561

asi sucesivamente

les agradesco por su respuesta

ChristianTS.

1 Respuesta

Respuesta
1

Te mando mi solución. Los datos ocupan el rango A1:¿D?

Esta es la macro que necesitas:

Sub proceso()
'por luismondelo
Range("a1").Select
Do While ActiveCell.Value <> ""
ubica = ActiveCell.Address
ActiveCell.Value = "id " & ActiveCell.Value
Range(ActiveCell, ActiveCell.Offset(0, 3)).Copy
Range("e65000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues, Transpose:=True
Range(ubica).Offset(1, 0).Select
Loop
Range("e1").Delete
End Sub

recuerda finalizar

Gracias por su respuesta, pero tengo unas dudas, cuando finaliza la ejecución de la macro los datos quedan de la siguiente manera:

1. A los datos de la A" lo agrega la palabra id" cada vez que se ejecuta la macro, lo que necesitaba era que lo agregue solo en la columna "E" seguido de valor de la columna A.

2. Mis datos de la Columna "C" son dd/mm/aa cuando lo transpone lo cambia de formato los que debería ser 01/06/2006 lo cambia a 38869.

3.Cuando quiero ejecutar nuevamente la macro los datos lo coloca a la desde la ultima celda vacía de la columna "E", no reemplaza los datos ejecutados.

http://c/:\Documents

te agradezco por tu respuesta

Hola, revisando algunas respuestas que hiciste a otros usuarios y lo resolví con la siguiente macro:

Sub proceso()
Fila = 1
ColResul = 5
Range("a1").Select
Do While ActiveCell.Value <> ""
Atrib1 = "IDE " & ActiveCell.Offset(0, 0).Value
Atrib2 = ActiveCell.Offset(0, 1).Value
Atrib3 = ActiveCell.Offset(0, 2).Value
Atrib4 = ActiveCell.Offset(0, 3).Value
Cells(Fila, ColResul).Value = Atrib1
atrib = ""
Fila = Fila + 1
Cells(Fila, ColResul).Value = Atrib2
atrib = ""
Fila = Fila + 1
Cells(Fila, ColResul).Value = Atrib3
atrib = ""
Fila = Fila + 1
Cells(Fila, ColResul).Value = Atrib4
atrib = ""
Fila = Fila + 1
ActiveCell.Offset(1, 0).Select
Loop
Range("a1").Select
End Sub

Quisiera tu ayuda para que a futuro no se este modificando manualmente el código de la macro, ya que las columnas A hasta D pueden ser ampliadas quizás hasta columna Z o menos, y cada vez que agregue una columna con los nuevos valores tendría que estar cambiando el código de la macro o adicionando.

Gracias por tu apoyo y tiempo

ChristianTS.

En tu ejemplo) los datos de tu columna C solo eran números, por este motivo no me preocupé del formato.

Con mi macro reformado todo queda subsanado, es más corta y trabajará para cualquier longitud de datos que tengas en la columna A.

Esta es la macro reformada:

Sub proceso()
'por luismondelo
ActiveSheet.Columns("e:e").ClearContents
Range("a1").Select
Do While ActiveCell.Value <> ""
ubica = ActiveCell.Address
ActiveCell.Value = "id " & ActiveCell.Value
Range(ActiveCell, ActiveCell.Offset(0, 3)).Copy
Range("e65000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues, Transpose:=True
Range(ubica).Select
ActiveCell.Value = Replace(ActiveCell.Value, "id ", "")
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Columns("e:e").NumberFormat = "dd/mm/yyyy"
Range("e1").Delete
End Sub

recuerda finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas