Consolida dados de várias planilhas com as mesmas colunas, mas diferentes números de linhas no Excel

0

Eu tenho uma pasta de trabalho do Excel com várias planilhas. Todos eles têm os mesmos nomes de coluna. No entanto, o número de linhas difere de folha para folha. Eu quero criar uma folha de visão geral onde eu possa ver todos os dados de cada folha. Eu poderia ir em cada folha, apenas copiar e colar os dados da segunda linha para a última linha com dados em cada folha. Mas eu acho que há uma maneira mais fácil de fazer isso?

Obrigado pela sua ajuda!

    
por jeffrey 25.09.2015 / 12:48

3 respostas

1

Esta é uma solução usando o VBA:

Public Sub overview()
    resultsheet = "Overview"
    Dim wkb As Workbook
    Dim wks, wks1 As Worksheet
    Set wkb = ThisWorkbook
    On Error GoTo SheetError:
        Set wks1 = wkb.Sheets(resultsheet)
    destrow = 1
    totalcolumn = 1
    totalwks = wkb.Sheets.Count
    For i = 1 To totalwks
        Set wks = wkb.Sheets(i) 'Iterate over all sheets
        wksname = wks.Name
        If wksname <> resultsheet Then 'Exclude the overview sheet
            rowdata = True
            columndata = True
            thisrow = 2
            thiscolumn = 1
            totalempty = 0
            While rowdata = True
                If i = 1 Then 'First sheet section
                    a = wks.Cells(thisrow - 1, thiscolumn)
                    If a <> "" Then
                        wks1.Cells(destrow, thiscolumn) = a
                        thiscolumn = thiscolumn + 1
                    Else
                        If thisrow = 2 Then
                            totalcolumn = thiscolumn
                        End If
                        totalempty = totalempty + 1
                        If totalempty = totalcolumn Then
                            rowdata = False
                        End If
                        If thiscolumn = totalcolumn Then
                            thisrow = thisrow + 1
                            thiscolumn = 1
                            destrow = destrow + 1
                            totalempty = 0
                        End If
                    End If
                Else ' Any other Sheet section
                    a = wks.Cells(thisrow, thiscolumn)
                    If a <> "" Then
                        rowdata = True
                        wks1.Cells(destrow, thiscolumn) = a
                        thiscolumn = thiscolumn + 1
                    Else
                        totalempty = totalempty + 1
                        If totalempty = totalcolumn Then
                            rowdata = False
                        End If
                        If thiscolumn = totalcolumn Then
                            thisrow = thisrow + 1
                            thiscolumn = 1
                            destrow = destrow + 1
                            totalempty = 0
                        End If


                    End If
                End If
            Wend

        End If
    Next i
    Exit Sub
SheetError:
    If Err.Number = 9 Then
        createwks = MsgBox("Worksheet " & resultsheet & " doesn't exist" & vbCrLf & "Do you want to create it?", vbYesNo, Error)
    End If
    If createwks = 6 Then
        Set wks1 = wkb.Worksheets.Add(After:=Worksheets(Worksheets.Count))
        wks1.Name = resultsheet
        Resume
    End If
End Sub

Você tem que abrir Macros / VBA no ThisWorkbook para inserir um módulo e colar este código no lado direito, então execute isso e verifique o conteúdo na planilha chamada Visão geral quando termina.

    
por 25.09.2015 / 14:13
0

Eu faria manualmente:)

Você pode dar uma olhada em esta solução (Consolidar dados por posição) , você verá que é a sobrecarga similar:

In each worksheet that contains the data that you want to consolidate, set up the data by doing the following:

Make sure that each range of data is in list format: each column has a label in the first row and contains similar facts, and there are no blank rows or columns within the list.

Put each range on a separate worksheet, but don't put any ranges on the worksheet where you plan to put the consolidation.

Make sure that each range has the same layout.

In the master worksheet, click the upper-left cell of the area where you want the consolidated data to appear.

Note To avoid overwriting existing data in the destination worksheet with the data you are consolidating, make sure that you leave enough cells to the right and below this cell for the consolidated data.

... and so long ...

    
por 25.09.2015 / 13:17
0

Não vejo vantagem em fazer isso. Eu não posso dizer o que você tem que fazer, mas se você dividiu os dados nas várias folhas, você deve ter uma razão para fazer isso. Se você tem uma razão, por que juntar-se então? Isso não faz sentido para mim. Tudo bem, o que eu faria é, por que eu preciso ver, em primeiro lugar, todos juntos? Isso só dificulta encontrar qualquer coisa, espere, sim, apenas se você quiser usar a função de edição para localizar dados específicos sobre ela. Mas você tem que fazer isso muitas vezes? Eu teria, se houvesse algo relacionado, fazer, por ex, um SUM ou outro currículo em cada planilha, e na nova planilha fazer uma referência cruzada para aquele campo em cada planilha separada.para consolidar os dados, sem copiar os dados completos para apenas uma folha. Se você é um bom programador, a primeira solução para copiá-lo pode ajudar, mas não é tão simples, você verá. E por último, mas não menos importante, se cada folha crescer em números de linha, certifique-se de que a SUM ou qualquer outra coisa esteja na parte superior e direita, portanto a planilha aumenta, mas os dados consolidados não são afetados.

    
por 25.09.2015 / 16:36