Copiar 2 columnas para rellenar la hoja completa de ex

Tengo una lista larga de datos que tienen 2 columnas A y B, y van hasta la fila 500, necesito copiar a partir de la segunda hoja (A57:B112) y pegarlos en la columna C1 yD1, y así sucesivamente hasta llenar la hoja horizontalmente hasta la letra E1, F1 luego continuar copiando el resto de datos (A13:B168) y seguir copiando hasta armar los datos en varias hojas tipo carta horizontalmente para imprimir varias columnas en 1 sola hoja.

1 Respuesta

Respuesta
1
Siento por tardarme en la respuesta.
Creo que no te entendí bien. ¿Tus datos están en la hoja 1? Si están en la misma hoja y me indicas que quieres copiar desde A57. ¿Entonces quieres columnas de A a F de 56 datos? ¿Y Por qué primero partes de A57 y después de A13? ¿Es A13 o A113 lo que quisiste escribir?
Pregunto todo esto, porque pensé en una macro que te ayudara, pero al ser irregulares las selecciones (si primero tomas de A57 y luego de A13, ¿qué seguiría?), ya no la pude escribir.
Saludos y espero te comuniques, aunque creo que habrás preguntado y obtenido respuesta, si así es, que bueno, lo importante es que se resuelva tu problema. Si aun requieres ayuda, contáctame y lo resolvemos.
Hola Experto muchas gracias por contestar, si en realidad aun necesito ayuda, todo se realiza en la misma hoja, mira que ya logre con una solución que ustedes me enviaron poder copiar dos extensas columnas (van desde 1 hasta 50.000 filas) y se deben copiar de tal forma que tan solo ocupen el tamaño de una hoja tipo carta, por eso se cortan y se pegan al ladro derecho hasta recorrer todas la filsa, he aprendido de esta macro y ya se como modificarla cuando sean más columnas, simplemente cambiando col=, luego Range etc, pero aun tengo un problema y es que mis filas son tan largas que cuando empiezo a correr la macro y se empiezan a cortar y pegar los datos llega un momento en que las columnas se me acaban, PREGUNTA: como hago para que la macro continué pegando en la parte de abajo de la primera página de datos, ¿es decir si se le acaban las columnas en la IV entonces que continué en la celda A54 y así sucesivamente?
Muchas gracias, aquí te anexo la macro que tengo hasta el momento y mis datos ahora son de 2 columnas,
Sub cortandocol()
col = 3
fil1 = 54
fil2 = Range("A65536").End(xlUp).Row
While fil1 <= fil2
Range("A" & fil1 & ":B" & fil1 + 52).Copy Destination:=Cells(1, col)
col = col + 2
fil1 = fil1 + 53
Wend
'opcional
Rows("54:" & fil2) = ""
End Sub
Le hice una modificación al código que me posteaste para que hiciera lo que me pides:
Sub cortandocol()
col = 5
fil1 = 54
fil2 = Range("A65536").End(xlUp).Row
FilAct = 1
While fil1 <= fil2
Range("A" & fil1 & ":B" & fil1 + 52).Copy Destination:=Cells(FilAct, col)
col = col + 2
'Modificacion de vmcmx. Util cuando los datos exceden el limite de columnas de Excel.
If col >= 255 Then
FilAct = FilAct + 54
col = 3
'Opcional
'MsgBox "Pasando a otra fila"
End If
fil1 = fil1 + 53
Wend
End Sub
Unicamente lo he probado para que genere 2 grupos de datos, dejando una fila entre cada bloque. Si tienes algún problema puedes volver a preguntar o si todo bien solo cierra la pregunta.
Hola VMCMX, muchas gracias por tu respuesta, la macro funciona de maravilla, pero le he realizado algunos cambios a la macro para ajustarla a la página tipo carta, sin embargo aun no se como meter en la macro la opción de que borre las columnas que ya se copiaron para que al final solamente queden los datos que se movieron, es decir anteriormente en la macro original la función:
'opcional
Rows("54:" & fil2) = ""
Y esto iba dejando limpio las columnas sobre las cuales ya se había trabajado, ¿Cómo hago eso mismo ahora? Aquí te envío la macro con los cambios realizados
Y gracias por tu ayuda
Sub macro1()
col = 3
fil1 = 53
fil2 = Range("A65536").End(xlUp).Row
FilAct = 1
While fil1 <= fil2
Range("A" & fil1 & ":B" & fil1 + 52).Copy Destination:=Cells(FilAct, col)
col = col + 2
'Modificacion de vmcmx. Util cuando los datos exceden el limite de columnas de Excel.
If col >= 255 Then
FilAct = FilAct + 52
col = 1
'Opcional
'MsgBox "Pasando a otra fila"
End If
fil1 = fil1 + 52
Wend
End Sub
El código opcional que te habían recomendado puedes ponerlo entre Wend y End Sub. Este no borra cada rango a medida que lo copia, sino que borra todo el rango de datos después de hacer la copia.
...
End If
fil1 = fil1 + 52
Wend
Rows("54:" & fil2) = ""
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas