Excel - Copie dados de várias planilhas para uma planilha

Excel - Copie dados de várias planilhas para uma planilha

Eu uso um programa que exporta dados para várias planilhas e preciso de todos eles na mesma planilha, um abaixo do outro.

Sobre as planilhas - Eles variam em nomes a cada exportação, portanto isso não precisa ser definido, pois às vezes há mais de 100 planilhas diferentes.

Dentro das planilhas - há dados de linhas e colunas variadas (e preciso copiar até a linha em branco na planilha principal na próxima linha disponível que estiver em branco).

A planilha em que todos os dados também precisam ser copiados - inicialmente ficará em branco, porém preciso de todos os dados uns sobre os outros com base em uma cópia de linha das outras planilhas. (isso pode ter um nome definido, se necessário)

Sou novo no VBA, então espero que a explicação acima ajude.

Meu VBA atual não está funcionando:

 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

Responder1

Eu gostaria de sugerir que o VBA (Macro) irá ajudá-lo a copiar o intervalo usado de todas as planilhas para o novo, funciona exatamente como consolidação de dados.

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

Como funciona:

  • cópia de&Colareste código como Módulo.
  • A macro criará uma nova planilha na pasta de trabalho existente denominada comoPlanilha Mestra, que é editável.
  • Em vez de copiar dados da linha superior para a última, usei oFaixa Usadamétodo, pois acomodará todas as atualizações.

Responder2

isso é muito bom, mas preciso que ele atenda a uma faixa específica - pode ser feito, por favor?


Eu gostaria de sugerir que o VBA (Macro) irá ajudá-lo a copiar o intervalo usado de todas as planilhas para o novo, funciona exatamente como consolidação de dados.

SubCombinarDados()

Dim I As Long
Dim xRg As Range

On Error Resume Next

Worksheets.Add Sheets(1)

ActiveSheet.Name = "MasterSheet"

Para I = 2 Para Sheets.Count Definir 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 Como funciona:

Copie e cole este código como Módulo. A macro criará uma nova planilha na pasta de trabalho existente denominada MasterSheet, que é editável. Em vez de copiar os dados da linha superior para a última, usei o método UsedRange, pois acomodará todas as atualizações.

informação relacionada