Extraer columnas de varias hojas a una sola

Espero alguien me pueda ayudar, tengo un libro con 5 hojas (periodo 1, periodo 2, etc) en la hoja resumen del mismo libro necesito extraer 3 columnas de cada una de las hojas anteriores y que los datos se concentren hacia abajo de acuerdo al periodo (periodo 2 abajo del periodo 1, etc), ¿por favor pueden decirme si hay alguna fórmula o macro que haga esto?

1 respuesta

Respuesta
1
Esta macro realiza lo que pides
'copia todas las hojas del libro en una sola hasta la columna cuen,3
Sub copiar_hojas()
Dim contador As Integer
contador = Worksheets.Count
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
For i = 1 To contador
Sheets(i).Select
cuen = Range("A" & Cells.Rows.Count).End(xlUp).Row
Range(Cells(1, 1), Cells(cuen, 3)).Copy
Sheets(Worksheets.Count).Select
Range("a" & Cells.Rows.Count).End(xlUp).Select
ActiveSheet.Paste
Next
MsgBox "Proceso finalizado"
End Sub
Copia las 3 primeras columnas de cada hoja en una nueva pruébalas y si necesitas alguna aclaración o adaptación dímelo
Hola, buenas tardes.
Muchas gracias por tu pronta respuesta, es casi lo que necesito, solo con dos aclaraciones que espero me puedas ayudar.
El libro contiene 6 hojas
Hoja 1 = Reporte (aquí tomo datos de las hojas 4 a 6)
Hoja 2 = Periodo 1
Hoja 3 = Periodo 2
Hoja 4 = Periodo 3
Hoja 5 = Periodo 4
Hoja 6 = Periodo 5
En la hoja 7 y que ya existe llamada "Concentrado" es donde necesito que se copien las columnas del periodo 1 al Periodo 5, sin que se cree una hoja nueva, otro punto es que las columnas a copiar contienen fórmulas y necesito que se copien unicamente los valores, muchas gracias de antemano por tu ayuda.
Saludos
Prueba con esta otra
'Macro creada x d2enri 1-06-2011
Sub copiar_hojas()
Dim contador As Integer
contador = Worksheets.Count
For i = 1 To 6 'contador
Sheets(i).Select
cuen = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Range(Cells(1, 1), Cells(cuen, 3)).Copy
Sheets("Concentrado").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
Sheets("Concentrado").Select
Range("A1").Select
MsgBox "Proceso finalizado"
End Sub
Esta realiza lo que pides pero con un par de especificaciones
1º la hoja Concentrado la tienes que situar la 1º osea la de más a la derecha
2º la hoja reporte la tienes que situar la ultima osea la más a la izquierda
Si te vale así perfecto y si te es un inconveniente situar las hojas como te digo me lo dices y me curro un poco más la macro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas