Combine tabelas em várias planilhas em uma planilha

Combine tabelas em várias planilhas em uma planilha

Eu tenho um documento Excel com mais de 30 planilhas. Cada um tem o mesmo layout: uma tabela simples com as mesmas colunas, cabeçalho/total de linhas, mas um número diferente de linhas (nenhuma tem mais de 500 linhas).

Quero combiná-los em uma tabela mestre. Operação única apenas.

Manualmente, eu poderia copiar 30 tabelas uma após a outra em uma nova planilha. Quando terminar, eu classificaria e excluiria qualquer linha em branco/cabeçalho/total. Eu não me importo com a formatação. Acho que levaria cerca de 15 a 20 minutos, mas sempre há o risco de cometer um erro e perder uma folha ou algo assim.

Parece que o VBA levaria muito tempo. No momento, estou quase pensando em importar a pasta de trabalho para o SQL Server, UNION-los e copiar e colar o resultado de volta para o Excel.

Você tem algum truque bom?

Responder1

Se isso é algo que você precisa fazer com frequência, recomendo escrever uma rotina rápida de VBA. Se for algo único, eu faria isso manualmente. Para ter certeza de não pular uma tabela acidentalmente, use recortar e colar em vez de copiar e colar.

Aqui está como eu faria isso. É bastante rápido com atalhos de teclado.

  • Abra a pasta de trabalho original no Excel como somente leitura para evitar qualquer perda acidental de dados.
  • Abra uma nova pasta de trabalho para armazenar a nova Tabela Mestre.
  • Feche todas as outras pastas de trabalho para que seja fácil alternar entre as duas com as quais você está trabalhando.
  • Selecione a primeira planilha da pasta de trabalho original que você deseja copiar.

Agora você pode começar a usar atalhos de teclado.

  1. Ctrl + Homepara ir para o canto superior esquerdo da planilha. (Isto irá saltar para A1, a menos que haja linhas ou colunas congeladas.)
  2. Shift + Ctrl + Endpara selecionar tudo à esquerda e abaixo da célula atualmente selecionada.
  3. Ctrl + Xpara cortar os dados.
  4. Ctrl + Tabpara mudar para a nova pasta de trabalho.
  5. Verifique novamente se você está no local correto e pressione Enterpara colar os dados.
  6. Ctrl + Endpara ir para a última célula colada.
  7. Down Arrowpara ir para a próxima linha não utilizada.
  8. Ctrl + Left Arrowpara voltar à coluna A.
  9. Ctrl + Tabpara voltar à pasta de trabalho original.
  10. Ctrl + Page Downpara selecionar a próxima planilha.
  11. Volte ao passo 1 e repita até terminar.

Quando terminar, você pode Ctrl + Page Uprevisar todas as planilhas originais e verificar se todos os dados foram removidos.

Supondo que sua linha de título não esteja congelada, isso copiará a linha de título de todas as 30 tabelas. Nesse caso, classifique a tabela mestre para agrupar todas as linhas de título duplicadas e exclua os extras ou use Dados -> Remover Duplicados.

Se você acidentalmente pular uma etapa ou colar dados existentes, pressione Ctrl + Zpara desfazer.

Acabei de fazer um teste seguindo os passos acima. A pasta de trabalho que usei tinha 10 planilhas, cada uma com 120 linhas de dados. Levei 1 minuto e meio para criar a tabela mestre. Se você não estiver familiarizado com os atalhos do teclado, poderá demorar o dobro do tempo. Para 30 planilhas, acho que levará 10 minutos.

Responder2

Acrescento o mesmo problema, encontrei uma macro incrível aqui: http://excel.tips.net/T003005_Condensing_Multiple_Worksheets_Into_One.html

Sub Combine()
    Dim J As Integer

    On Error Resume Next
    Sheets(1).Select
    Worksheets.Add ' add a sheet in first place
    Sheets(1).Name = "Combined"

    ' copy headings
    Sheets(2).Activate
    Range("A1").EntireRow.Select
    Selection.Copy Destination:=Sheets(1).Range("A1")

    ' work through sheets
    For J = 2 To Sheets.Count ' from sheet 2 to last sheet
        Sheets(J).Activate ' make the sheet active
        Range("A1").Select
        Selection.CurrentRegion.Select ' select all cells in this sheets

        ' select all lines except title
        Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select

        ' copy cells selected in the new sheet on last line
        Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
    Next
End Sub

Basta copiar e colar a macro, executá-la e pronto!

informação relacionada