Se você estiver lidando com várias planilhas de uma vez, e deseja copiar os dados de cada planilha para uma planilha mestre, então você deve ler este artigo. Usaremos a propriedade currentregion do código VBA para consolidar os dados de todas as planilhas em uma única planilha. Esta propriedade é útil para muitas operações que expandem automaticamente a seleção para incluir toda a região atual, como o método AutoFormatação. Esta propriedade não pode ser usada em uma planilha protegida.
A condição é: cada folha deve conter formato semelhante, ou seja, mesmo número de colunas; usando o mesmo formato, podemos ter dados mesclados com precisão.
Observação: este artigo demonstrará o uso do código VBA; se, por qualquer razão, o número de colunas diferir em uma das planilhas, todos os dados mesclados não fornecerão uma imagem precisa. É altamente recomendável usar o mesmo número de colunas. O código VBA adicionará uma nova planilha à pasta de trabalho e, em seguida, copiará e colará os dados após cada planilha sem sobrescrever.
Vamos dar um exemplo de 3 folhas, ou seja, janeiro, fevereiro e março. A seguir estão os instantâneos dessas folhas:
Para combinar os dados de todas as planilhas em uma planilha, precisamos seguir as etapas abaixo para iniciar o editor VB:
- Clique na guia Desenvolvedor
- No grupo Código, selecione Visual Basic
- Copie o código abaixo no módulo padrão
Sub CopyCurrentRegion () Dim sh As Planilha Dim DestSh As Planilha Dim Last As Long If SheetExists ("Master") = True Then MsgBox "A planilha Master já existe" Sair Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" para cada sh em ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) sh.Range ("A1"). CurrentRegion.Copy DestSh. Células (Último + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyCurrentRegionValues () Dim sh As Planilha Dim DestSh As Planilha Dim Last As Long If SheetExists ("Master") = True Then MsgBox "A planilha Master já existe "Sair Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name =" Master "Para Cada sh In ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) Com sh.Range ("A1"). CurrentRegion DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Value End With End If End If Next Application.ScreenUpdating = True End Sub Função LastRow (sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Row On Error GoTo 0 End Function Function Lastcol (sh como Worksheet ) On Error Resume Next Lastcol = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns , _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Column On Error GoTo 0 End Function Function SheetExists (SName As String, _ Optional ByVal WB As Workbook) As Boolean On Error Resume Next If WB Is Nothing Then Defina WB = ThisWorkbook SheetExists = CBool (Len (Sheets (SName) .Name)) End Function
A macro CopyCurrentRegion chamará a função “SheetExists” e verificará se existe um nome de planilha com “Master”; se for encontrado, não fará nada; do contrário, inserirá uma nova planilha na pasta de trabalho ativa e a renomeará como “Mestre” e, em seguida, copiará os dados de todas as planilhas.
A seguir estão os instantâneos dos dados consolidados:
Observação: a pasta de trabalho de amostra contém a planilha mestre; sugere-se excluir a planilha mestre e, em seguida, executar a macro para ver o código VBA funcionando.
Conclusão:Agora temos o código que podemos usar para transferir dados de cada planilha para uma planilha.
Se você gostou de nossos blogs, compartilhe com seus amigos no Facebook. E você também pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar, complementar ou inovar nosso trabalho e torná-lo melhor para você. Escreva-nos no site de e-mail