Copie o UsedRange de cada planilha em uma planilha usando VBA no Microsoft Excel

Anonim

Caso queira copiar o intervalo utilizado de cada planilha para a planilha Master, então você deve ler este artigo. Usaremos o código VBA para copiar os dados de cada planilha e, em seguida, colar em outra planilha sem sobrescrever.

A macro adicionará uma planilha com o nome Master à sua pasta de trabalho e copiará as células de todas as planilhas da pasta de trabalho nesta planilha.

A primeira macro faz uma cópia normal e a segunda macro copia os Valores. Os subs da macro usam as funções abaixo; a macro não funciona sem as funções.

A seguir estão os instantâneos dos dados da Planilha1 e Planilha2:

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 CopyUsedRange () 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 Definir 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.UsedRange.Copy DestSh.Cells (Last + 1, 1 ) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyUsedRangeValues ​​() Dim sh As Planilha Dim DestSh As Planilha Dim Last As Long If SheetExists ("Master") = True Then MsgBox "A planilha Master já existe" Exit 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.UsedRange DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Value End With End If End If Next Ap plication.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 As 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, _ Opcional ByVal WB As Workbook) As Boolean On Error Resume Next If WB Is Nothing Then Defina WB = ThisWorkbook SheetExists = CBool ​​(Len (Folhas (SName) .Name)) Função Final 

Agora, o código da macro está definido; vamos executar a macro “CopyUsedRange” e ela irá inserir uma nova planilha “Master” e copiar os dados de cada planilha.

Conclusão:Copiar dados de várias planilhas é uma tarefa manual; Contudo; com o código acima, podemos consolidar os dados com um único clique em uma macro.

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