Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Juntar várias planilhas em uma só (Excel)

Perguntas e Repostas sobre os artigos, posts e arquivos que são postados no site
Sil
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Ter Mai 12, 2015 10:30 am

Juntar várias planilhas em uma só (Excel)

Mensagem por Sil »

Olá!

Preciso unir informações de várias planilhas (+/- 25) em uma única para consolidar os dados, sendo que várias pessoas alimentam estas planilhas. As planilhas tem um padrão e são repletas de fórmulas. Tentei usar: Dados>De Outras Fontes>Do Microsoft Query, porém quando uso o comando union all, só trás informações de 1 planilha.

Podem me ajudar?

Obrigada!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


andreluoliveira
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Sáb Nov 14, 2015 10:45 am

Re: Juntar várias planilhas em uma só (Excel)

Mensagem por andreluoliveira »

Olá!

consegui!!!
mas antes...
Também me deparei com a mesma necessidade e , após algumas pesquisas sobre o assunto cheguei aos vídeos do Tomás no youtube. Mesmo seguindo todas as dicas e orientações, tive vários problemas no resultado final, pois precisava unir dados de cinco planilhas de controle de produção, sendo que cada planilha é um arquivo separado e fica em máquinas distintas na rede.
como resolvi:
criei um arquivo novo (Excel obvio) chamado "ConsolidacaoTodasMaquinas". Neste arquivo abri cinco planilhas (abas). Em cada aba criei conexões com os respectivos dados das planilhas originais que são alimentadas diariamente pelo pessoal da fábrica. Agora com os dados reunidos em um só arquivo, precisava unificá-los em uma única planilha. Eis o problema! Mesmo seguindo as dicas do Tomás (https://www.youtube.com/watch?v=2g24Xqyu5TI) não obtive sucesso.

finalmente Resolvi:
como tenho um prévio e básico conhecimento em VBA, resolvi criar um código para unir todas as planilhas em uma só. Antes porém, renomeei cada intervalo de dados (planilhas) para referenciar no código. ficou assim:
'----------------------------------------------------------------------
Dim vStarTime As Double, vEndTime As Double, vTempoCorrido As Double ' variáveis para calculo do tempo necessário para executar o procedimento
Dim UltimaLinha As Long 'Variável para localizar a última linha preenchida na planilha

Sub ConsolidarTudo()

Application.ScreenUpdating = False

vStarTime = Timer 'inicia a contagem do tempo do necessário para executar o procedimento

UltimaLinha = Sheets("Consolidacao").UsedRange.Rows.Count + 1 'localizar a última linha preenchida na planilha consolidação
'ULtimaCouna = heets("Consolidacao").UsedRange.Columns.Count

If UltimaLinha > 2 Then
Sheets("Consolidacao").Rows("2:" & UltimaLinha).Delete ' Seleciona todas as linhas exceto o cabeçaho e deleta
UltimaLinha = Sheets("Consolidacao").UsedRange.Rows.Count + 1 'Atualiza a contagem de linhas após ter limpado a planilha
End If

Range("tblAlban1").Copy
Sheets("Consolidacao").Range("A" & UltimaLinha).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
UltimaLinha = Sheets("Consolidacao").UsedRange.Rows.Count + 1

Range("tblAlban2").Copy
Sheets("Consolidacao").Range("A" & UltimaLinha).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
UltimaLinha = Sheets("Consolidacao").UsedRange.Rows.Count + 1

Range("tblAlban3").Copy
Sheets("Consolidacao").Range("A" & UltimaLinha).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
UltimaLinha = Sheets("Consolidacao").UsedRange.Rows.Count + 1

Range("tblAlban4").Copy
Sheets("Consolidacao").Range("A" & UltimaLinha).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
UltimaLinha = Sheets("Consolidacao").UsedRange.Rows.Count + 1

Range("tblAlban5").Copy
Sheets("Consolidacao").Range("A" & UltimaLinha).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
UltimaLinha = Sheets("Consolidacao").UsedRange.Rows.Count + 1

vEndTime = Timer 'Finaliza a contagem do tempo

vTempoCorrido = vEndTime - vStarTime 'Calcula a diferenca entre o tempo inicial e final, ou seja, o tempo corrido para executar o procedimento

MsgBox "Consolidação concluída com sucesso em " & vTempoCorrido & " segundos.", vbInformation, "Consolidação dos dados de todas as máquinas Albans"

Application.ScreenUpdating = True

End Sub

'--------------------------------------------------------------
Onde "tblAlban1" é o nome do intervalo da planilha 1 e assim por diante. Brincando um pouco, coloquei um contador de tempo onde é possível ver o tempo que demora pra executar o procedimento.

espero que gostem e que ajude alguém que precise, como eu precisei e quebrei a cabeça


Responder