Saltar al contenido

Duda: macro para copiar filas de 1sheet a otra pero dejando 2 huecos entre celdas ocupadas

publicado

El caso es que tengo en la Sheet3 varias filas con un número variable de columnas ocupadas:

Ej:

............ColumA.......ColumB.......ColumC.........ColumD

Fila 1:....Juan..........María............Diego............Rubén

Fila 2:....Pepe..........Antonio........Jose

Fila 3:....Encarna

Quiero pegar todas esas filas en la Sheet2, pero no como están, sino dejando dos columnas vacías entre celdas con nombres, de la siguiente manera:

Ej:

..........ColumnA.......B.......C..........ColumD.......E.......F........ColumG.......H.......I........ColumJ

Fila 1:....Juan....................................María...............................Diego............................Rubén

Fila 2:....Pepe...................................Antonio.............................Jose

Fila 3:....Encarna

Lo que me gustaría es una Macro que me copie la lista de filas completa de la Sheet3 y que se peguen en la Sheet2 pero de la forma que he expuesto.

Es mi primera pregunta en un foro de este tipo, no sé sí me he sabido explicar bien!

Espero vuestra ayuda!

Un saludo y muchas gracias

Featured Replies

publicado

.

Selecciona el rango de celdas a copiar, ejecuta la macro, y te aparecerán en Sheet3 como quieres.

Si no es eso, sube un archivo con un ejemplo.

Sub Copiar()
For Each celda In Selection
r = Selection.Row
c = Selection.Column
Sheets("Sheet3").Cells(celda.Row - r + 1, (celda.Column - c) * 3 + 1) = celda.Value
Next
End Sub
[/CODE]

.

publicado
  • Autor

Siento no haberme explicado bien. El caso es que tengo en la Sheet3 varias filas (20,21,22..) con un número variable de columnas ocupadas (A,B,C...):

Ej:

............ ColumA.......ColumB.......ColumC.........ColumD

Fila 20:....Juan..........María............Diego............Rubén

Fila 21:....Pepe..........Antonio........Jose

Fila 22:....Encarna

Quiero pegar todas esas filas en la Sheet2, pero no como están, sino dejando dos columnas vacías entre celdas con nombres, empezando por la columna I en fila 7, de la siguiente manera:

Ej:

......... ColumnI......J.......K......ColumL.......M.......N......ColumO......P.....Q......ColumR

Fila 7:...Juan.............................María.............................Diego.......................... Rubén

Fila 8:...Pepe............................Antonio...........................Jose

Fila 9:..Encarna

Lo que me gustaría es una Macro que me copie la lista de filas completa de la Sheet3 y que se peguen en la Sheet2 pero de la forma que he expuesto.

Un saludo y muchas gracias

publicado

Saludos @perthelysea, @Macro Antonio

Será algo así

Sub Copia()
Sheets("Hoja3").Range("A1", Range("A60000").End(xlUp)).Copy Sheets("Hoja2").Range("A1")
Sheets("Hoja3").Range("B1", Range("B60000").End(xlUp)).Copy Sheets("Hoja2").Range("D1")
Sheets("Hoja3").Range("C1", Range("C60000").End(xlUp)).Copy Sheets("Hoja2").Range("G1")
Sheets("Hoja3").Range("D1", Range("D60000").End(xlUp)).Copy Sheets("Hoja2").Range("J1")
End Sub[/CODE]

publicado

Hola a todos!

Coloca este código en un módulo, y ejecútalo:

Sub CopiaDatos()
Dim i As Long
With Sheets("Hoja3").Range("A1").CurrentRegion
For i = 1 To .Columns.Count
.Columns(i).Copy Sheets("Hoja2").Range("I1").Offset(, 3 * (i - 1))
Next i
End With
End Sub
[/CODE]

Comentas!

Espero haberte ayudado, Dios te bendiga!

publicado

Otra opcion:

Sub Macro1()
Sheet3.[a1].CurrentRegion.Copy Sheet2.[a1]
Sheet2.[c1].Resize(, 2).EntireColumn.Insert
Sheet2.[b1].Resize(, 2).EntireColumn.Insert
End Sub[/CODE]

publicado
  • Autor

Muchas gracias johnmpl, he probado con tu rutina y la macro funciona correctamente, justo lo que quería!

Un saludo :)

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.