Juntar información en una sola hoja

Espero que me puedan ayudar con una macro que permita juntar la información de 6 hojas que tengo en una sola hoja teniendo en cuenta que la información de cada hojapuede cambiar en cantidades, el formato que utilizo es una base de datos en 2003, todas las hojas tienen las mismas cabeceras asi que solo necesito que este una debajo de otra sin que haya espacios en blanco.

1 respuesta

Respuesta
1

Necesito saber en qué fila empiezan lo datos de esas 6 hojas, necesito saber en qué fila está el encabezado.

s cabeceras están en la fila 1 de cada hojA

toda la información empieza en la celda A1

Te mando mi solución con esta macro:

Cuando haya terminado la macro tendrás una pestaña llamada zjuntas con toda la información apilada

Sub proceso()
'por luismondelo
Application.DisplayAlerts = False
c = 1
For x = 1 To Sheets.Count
If Sheets(x).Name = "zjuntas" Then
p = 1
End If
Next
If p = 1 Then Sheets("zjuntas").Delete
Sheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = "zjuntas"
For Each hoja In ActiveWorkbook.Sheets
If hoja.Name <> "zjuntas" Then
hoja.Select
ultimac = Range("iv1").End(xlToLeft).Column
ultimaf = Range("a65000").End(xlUp).Row
Range(Cells(2, 1), Cells(ultimaf, ultimac)).Copy
Sheets("zjuntas").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
If c = 1 Then
Range(Cells(1, 1), Cells(1, ultimac)).Copy
Sheets("zjuntas").Range("a1").PasteSpecial Paste:=xlValues
c = 2
End If
End If
Next
End Sub

recuerda finalizar

esta muy bueno, solo quisiera un detalle, despues que haya terminado de juntar las hojas, eliminar las filas de la columna B, solo las que tengan las dos primeras letras empiezen con RG o con GE, sin tocar las cabeceras.

Te manto otra vez toda la macro reformada para hacer lo que pides...

Sub proceso()
'por luismondelo
Application.DisplayAlerts = False
c = 1
For x = 1 To Sheets.Count
If Sheets(x).Name = "zjuntas" Then
p = 1
End If
Next
If p = 1 Then Sheets("zjuntas").Delete
Sheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = "zjuntas"
For Each hoja In ActiveWorkbook.Sheets
If hoja.Name <> "zjuntas" Then
hoja.Select
ultimac = Range("iv1").End(xlToLeft).Column
ultimaf = Range("a65000").End(xlUp).Row
Range(Cells(2, 1), Cells(ultimaf, ultimac)).Copy
Sheets("zjuntas").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
If c = 1 Then
Range(Cells(1, 1), Cells(1, ultimac)).Copy
Sheets("zjuntas").Range("a1").PasteSpecial Paste:=xlValues
c = 2
End If
End If
Next
Sheets("zjuntas").Select
Range("b65000").End(xlUp).Offset(1, 0).Value = "end"
Range("b1").Select
Do While ActiveCell.Value <> "end"
If UCase(Left(ActiveCell, 2)) = "RG" Or UCase(Left(ActiveCell, 2)) = "GE" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.ClearContents
End Sub

recuerda finalizar

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas