Excel - Macro para copiar, cortar y pegar entre hojas

Me llamo Esteban y me gustaría que me den una mano con una macro.

Tengo en una hoja (HOJA1) datos que empiezan en E11 y terminan en la columna Q. Los datos van aumentando hacia abajo.

Necesito una macro que copie los datos de E11:i11 y los pegue en otra hoja (HOJA2), a partir también de E11, luego copie desde J11:M11 y los pegue por debajo y finalmente copie y pegue desde N11:Q11.

Es decir a una fila (en HOJA1) dividirla en 3 (en HOJA2) comenzando desde E11 hacia abajo y continuar con la siguiente fila en HOJA1 hasta que no haya más datos en E11. ¿Sera posible? Estuve intentando un par de macros pero no lo pude lograr por mi cuenta.

2 respuestas

Respuesta
3

Te dejo una macro para hacer el pase de datos a la otra hoja. Como no mencionas qué tipo de pegado necesitas (con o sin fórmulas, con o sin formatos), lo que se hace aquí es una copia fiel de la hoja de origen.

Ingresa al Editor de macros (desde menú Programador/Desarrollador o con ALT+F11)

Inserta un módulo y allí copia lo siguiente:

Sub pase_de_col()
'x Elsamatilde
Set hod = Sheets("Hoja2")   'hoja destino
y = 11    '1er fila destino
x = Range("E" & Rows.Count).End(xlUp).Row   'filas de la hoja origen
For i = 11 To x
    Range("E" & i & ":I" & i).Copy Destination:=hod.Range("E" & y)
    Range("J" & i & ":M" & i).Copy Destination:=hod.Range("E" & y + 1) 'ATENCIÓN
    Range("N" & i & ":Q" & i).Copy Destination:=hod.Range("E" & y + 2) 'ATENCIÓN
    y = y + 3
Next i
MsgBox "Fin del pase."
End Sub

Donde dejé comentario de Atención, es porque el pegado de las siguientes filas las hace siempre en col E.... Ajusta la letra de la columna si fuese necesario.

Sdos y no olvides marcar una votación si el tema queda resuelto. Sino solicitá o enviá aclaraciones y lo seguimos tratando.

Si, es posible solo valores ... dame un momento que ya te lo envío... recién recibo tu mensaje.

Así te quedaría la macro:

Sub pase_de_col()
'x Elsamatilde
Set hod = Sheets("Hoja2")   'hoja destino
y = 11    '1er fila destino
x = Range("E" & Rows.Count).End(xlUp).Row   'filas de la hoja origen
For i = 11 To x
    Range("E" & i & ":I" & i).Copy
    hod.Range("E" & y).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    Range("J" & i & ":M" & i).Copy
    hod.Range("E" & y + 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    Range("N" & i & ":Q" & i).Copy
    hod.Range("E" & y + 2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    y = y + 3
Next i
MsgBox "Fin del pase."
End Sub

Si te queda todavía alguna duda lo seguimos tratando ;) Podés comentar a continuación, no es necesario enviar nueva respuesta.

Con el PasteSpecial estoy manteniendo valores y formatos (fechas, importes, etc). Si necesitas algún cambio, debieras dejarme imagen de los encabezados y alguna fila de datos como para identificar otro tipo de formatos.

Sdos!

Respuesta
1

Impresionante! Funciona a la perfección! Te pido un solo detalle! Si el pegado podría ser de solo los valores, sin fórmulas... si fuese posible, seria genial!

¿Nadie qué le de una vuelta de tuerca a la macro?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas