Excel: copie datos de varias hojas a una sola

Excel: copie datos de varias hojas a una sola

Utilizo un programa que exporta datos a varias hojas y los necesito todos en la misma hoja, uno debajo del otro.

Acerca de las hojas de trabajo: los nombres varían en cada exportación, por lo que no es necesario definirlo, ya que a veces hay más de 100 hojas diferentes.

Dentro de las hojas de trabajo: hay datos de diferentes filas y columnas (y necesito copiarlos hasta la fila en blanco en la hoja principal en la siguiente fila disponible que esté en blanco).

La hoja de trabajo en la que también se deben copiar todos los datos: inicialmente estará en blanco, sin embargo, necesito todos los datos uno encima del otro en función de una copia de fila de las otras hojas de trabajo. (Esto puede tener un nombre definido si es necesario)

Soy nuevo en VBA, así que espero que la explicación anterior me ayude.

Mi VBA actual no funciona:

 Sub SheetLoopPasteData()

Dim ws As Worksheet
Dim wsSheet As Worksheet
Set wsSheet = Sheets("Sheet2")

For Each ws In Worksheets
    ws.Activate
    variable = Cells(Rows.Count, 1).End(xlUp).Row
    Rows("1:" & variable).Copy _
    Destination:=wsSheet.Range("A" & (wsSheet.Range("A" & wsSheet.Rows.Count).End(xlDown).Row + 1))

Next



End Sub

Respuesta1

Me gustaría sugerir que VBA (Macro) lo ayudará a copiar el rango usado de todas las hojas de trabajo a Nuevo, funciona exactamente como Consolidación de datos.

Sub CombineData()

    Dim I As Long
    Dim xRg As Range

    On Error Resume Next

    Worksheets.Add Sheets(1)

    ActiveSheet.Name = "MasterSheet"

   For I = 2 To Sheets.Count
        Set xRg = Sheets(1).UsedRange

        If I > 2 Then
            Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
        End If

        Sheets(I).Activate
        ActiveSheet.UsedRange.Copy xRg
    Next

End Sub

Cómo funciona:

  • Copiar&Pegareste código como Módulo.
  • La macro creará una nueva hoja en el libro de trabajo existente denominada comoHoja maestra, que es editable.
  • En lugar de copiar datos desde la fila superior hasta la última, he usado elUsadoRangométodo, ya que se adaptará a todas las actualizaciones.

Respuesta2

Esto es muy bueno, pero lo necesito para un rango específico. ¿Se puede hacer, por favor?


Me gustaría sugerir que VBA (Macro) lo ayudará a copiar el rango usado de todas las hojas de trabajo a Nuevo, funciona exactamente como Consolidación de datos.

Subcombinar datos()

Dim I As Long
Dim xRg As Range

On Error Resume Next

Worksheets.Add Sheets(1)

ActiveSheet.Name = "MasterSheet"

Para I = 2 a Sheets.Count Set xRg = Sheets(1).UsedRange

    If I > 2 Then
        Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
    End If

    Sheets(I).Activate
    ActiveSheet.UsedRange.Copy xRg
Next

Fin Sub Cómo funciona:

Copie y pegue este código como módulo. La macro creará una nueva hoja en el libro de trabajo existente denominada MasterSheet, que es editable. En lugar de copiar datos desde la fila superior hasta la última, he utilizado el método UsedRange, ya que se adaptará a todas las actualizaciones.

información relacionada