Página 1 de 2
Extrair dados de uma planilha com base em outra
Enviado: 14 Abr 2015 às 16:05
por OrfeuVBA
Boa tarde
Estou trabalhando na planilha em anexo onde tenho diversas informações. Criei o código abaixo para extrair as informações da Plan2 (que é a planilha base) para a Plan1 (onde será gerado o relatório). Porém ao executar o código apenas consigo copiar os dados se na coluna F estiverem na mesma ordem (algo que ao fazer o relatório semanalmente não acontecerá), caso a ordem da Plan1 não seja a mesma que a Plan2 o código para.
Gostaria da ajuda dos colegas para que mesmo que a ordem da coluna F das duas folhas não seja a mesma a Plan1 seja preenchida.
Abaixo o código que estou usando:
Sub teste()
ultimacelula = Plan2.Cells(Rows.Count, 6).End(xlUp).Row
lin = 2
For i = 2 To ultimacelula
If Plan2.Cells(i, 6) = Plan1.Cells(lin, 6) Then
Plan1.Cells(lin, 2) = Plan2.Cells(i, 2)
Plan1.Cells(lin, 3) = Plan2.Cells(i, 3)
Plan1.Cells(lin, 7) = Plan2.Cells(i, 7)
Plan1.Cells(lin, 8) = Plan2.Cells(i, 8)
Plan1.Cells(lin, 9) = Plan2.Cells(i, 9)
lin = lin + 1
Else
MsgBox "Cota não encontrada " & Plan1.Cells(lin, 6).Value
lin = lin + 1
End If
Next
End Sub
A linha amarela na Plan1 não possui a cota na Plan2. A linha em azul na Plan1 a cota existe mas o código não busca as informações.
Re: Extrarir dados de uma planilha com base em outra
Enviado: 14 Abr 2015 às 16:32
por alexandrevba
Boa tarde!!
Eu não sei se entendi...
Veja se é isso
Código: Selecionar todosSub teste()
ultimacelula = Plan2.Cells(Rows.Count, 6).End(xlUp).Row
lin = 2
For i = 2 To ultimacelula
If Plan2.Cells(i, 6) = Plan1.Cells(i, 6) Then 'linha alterada
Plan1.Cells(lin, 2) = Plan2.Cells(i, 2)
Plan1.Cells(lin, 3) = Plan2.Cells(i, 3)
Plan1.Cells(lin, 7) = Plan2.Cells(i, 7)
Plan1.Cells(lin, 8) = Plan2.Cells(i, 8)
Plan1.Cells(lin, 9) = Plan2.Cells(i, 9)
lin = lin + 1
Else
'MsgBox "Cota não encontrada " & Plan1.Cells(lin, 6).Value
lin = lin + 1
End If
Next
End Sub
Att
Extrarir dados de uma planilha com base em outra
Enviado: 14 Abr 2015 às 16:54
por OrfeuVBA
Boa tarde,
Obrigado pelo retorno, mas infelizmente não deu certo. Se executar o código irá parar na linha 56, pois o código não encontra a cota 1134. O que preciso nesse caso é quando não encontrar a cota na planilha base o código continue a procura para as demais cotas da coluna, porém ele esta parando na cota não encontrada e não executa mais.
Att
Re: Extrarir dados de uma planilha com base em outra
Enviado: 14 Abr 2015 às 18:42
por laennder
Acrescente a linha abaixo no início do código, e veja se atende.
Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 09:21
por OrfeuVBA
Bom dia,
Infelizmente não deu certo, quando o código roda e chega na cota 1134 a mensagem de cota não atendida aparece, ao clicar em OK para o código continuar ele informa que a cota 8522 também não foi encontrada, porém se olhar na Plan2 existe essa cota com as informações, mas o código não trás as informações para a Plan1 como deveria.
Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 09:23
por laennder
Você pode anexar a sua planilha? Assim fica mais fácil ajudar.
Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 09:27
por OrfeuVBA
Anexo planilha para analise.
Grato
Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 09:57
por laennder
Não tinha visto que já tinha anexado a planilha no início do tópico. Tem que ser por macro o que você quer? Se entendi bem, não é só fazer uma busca do que está na plan2 e jogar na plan1? Dá pra fazer utilizando ÍNDICE e CORRESP por exemplo.
Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 10:22
por OrfeuVBA
Na verdade precisa ter macro. Esse é um relatório em arquivo txt que faço a formatação toda através de macro. Possuo outras macros antes dessa onde faço a formação do arquivo txt para o Excel. Para continuar a formatação do relatório preciso buscar algumas informações em uma planilha padrão. Esse é um relatório txt semanal gerado em um programa da empresa onde trabalho que preciso acrescentar outras informações e quero automatizar esse relatório devido o trabalho que é fazer tudo manualmente toda semana, perco muito tempo realizando a tarefa.
Re: Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 15:00
por alexandrevba
Boa tarde!!
Tem como dar mais detalhes?
seu objetivo é verificar quais dados da coluna F da guia Plan1 e se são iguais
a coluna F da guia Plan2, caso sim, popular as colunas B:C e G:I da guia Plan1 ?
Seria isso?
Att
Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 15:16
por OrfeuVBA
Isso mesmo. Só que com o código abaixo que postei apenas consigo fazer até a cota (coluna F) da Plan1 1134, quando o código passa para a cota 8522 ele compara e informa que não existe essa cota na Plan2, porém ela existe.
Código: Selecionar todosSub teste()
ultimacelula = Plan2.Cells(Rows.Count, 6).End(xlUp).Row
lin = 2
For i = 2 To ultimacelula
If Plan2.Cells(i, 6) = Plan1.Cells(lin, 6) Then
Plan1.Cells(lin, 2) = Plan2.Cells(i, 2)
Plan1.Cells(lin, 3) = Plan2.Cells(i, 3)
Plan1.Cells(lin, 7) = Plan2.Cells(i, 7)
Plan1.Cells(lin, 8) = Plan2.Cells(i, 8)
Plan1.Cells(lin, 9) = Plan2.Cells(i, 9)
lin = lin + 1
Else
MsgBox "Cota não encontrada " & Plan1.Cells(lin, 6).Value
lin = lin + 1
End If
Next
End Sub
Re: Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 15:21
por alexandrevba
Boa tarde!!
Isso porque essa linha só vai contar o que ver na guia "
Plan2", que neste caso é 690 linhas!!!
Código: Selecionar todosSub TestandoLinhas()
ultimacelula = Plan2.Cells(Rows.Count, 6).End(xlUp).Row
MsgBox "tem " & ultimacelula & " linhas na guia Plan2"
End Sub
O seu loop vai gira em torno das 690 linhas
Att
Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 15:27
por OrfeuVBA
Desculpa não consegui entende. Por favor poderia esclarecer melhor?
Re: Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 16:15
por alexandrevba
Boa tarde!!
Eu disse, que seu loop vai percorrer uma quantidade de linhas baseado na quantidade de dados na coluna F da guia Plan1.
Ex:
Se na coluna F da guia Plan1, tem 10 linhas, o loop vai percorrer (para comparar), 10 vezes!
Se na comparação uma guia tem mais linha que a outra, ou você define um número fixo (grande), ou usa a guia que terá mais linhas que a outra.
Att
Extrarir dados de uma planilha com base em outra
Enviado: 15 Abr 2015 às 16:23
por OrfeuVBA
Eu alterei o código para buscar a Plan1 que no exemplo possui mais linhas e mesmo assim não retorna as demais informações.
Mesmo assim obrigado pela ajuda.
Re: Extrarir dados de uma planilha com base em outra
Enviado: 16 Abr 2015 às 09:33
por alexandrevba
Bom dia!!
Orfeu, eu sinto em lhe informa que eu creio não poder lhe ajudar
Eu consigo verificar via VBA quais dados da coluna F tem em uma guia que não tem na outra,
eu consigo compara e inserir os dados que você deseja que seja feito, o problema está na
falta de padrão para que isso ocorra.
Você tem dados (colunas vazias B:C, G:I), na guia
Plan1, e referente a coluna
F, onde há dados duplicados, me faz entender que esses dados devem receber da guia
Plan2, caso os dados da coluna
F, sejam iguais, mas o problema é que seus dados da guia
Plan1, estão com "lacunas" onde é composto por dados preenchidos (em uma parte) e vazios (em outra), isso nas colunas (B:C, G:I) .
Acontece que devido a esse fato, eu não consigo perceber um padrão logico, se eu classificar esses dados (para os preenchidos ficarem juntos de todos preenchidos), me leva crer que os dados repetidos ou não faz sentido te-los na guia, ou não podem ser classificados (mudar suas posições).
Att
Extrarir dados de uma planilha com base em outra
Enviado: 16 Abr 2015 às 09:37
por OrfeuVBA
Obrigado!!!
Re: Extrarir dados de uma planilha com base em outra
Enviado: 16 Abr 2015 às 09:45
por alexandrevba
Bom dia!!
Talvez se você conseguisse explicar de uma forma bem manual (imagina que você está fazendo passo-a-passo, tudo na mão), ou gravasse uma macro, somente então talvez eu poderia lhe ajuda.
Já tentou Gravar uma Macro
Att
Extrarir dados de uma planilha com base em outra
Enviado: 16 Abr 2015 às 10:00
por OrfeuVBA
O que estou tentando fazer é como se fosse um PROCV da Plan1 com as informações da Plan2, ou seja, procurar o valor da coluna F em Plan1 na Plan2 e trazer as informações.
Porque não faço um PROCV? Devido o arquivo ser um relatório txt, ele não vem no formato da Plan1, possuo outras macros que já fazem essa formatação. O que preciso agora é buscar as informações das colunas B:C e G:I da Plan1 na Plan2, pois as demais colunas já vem preenchidas quando o relatório txt é gerado.
Pensei em fazer através do método Find mas infelizmente não consegui estruturar o código a busca não retorna nada ou aparece alguma mensagem de erro.
Att.
Re: Extrarir dados de uma planilha com base em outra
Enviado: 16 Abr 2015 às 13:33
por laennder
Agora eu acho que eu entendi. Veja se funciona.
Código: Selecionar todosSub PreencheDados()
ultimacelula = Plan1.Cells(Rows.Count, 6).End(xlUp).Row
Set Rng = Plan2.Range("F:F") ' Coluna de Cotas
lin = 2
For i = 2 To ultimacelula
On Error Resume Next
indice = Application.WorksheetFunction.Match(Plan1.Cells(i, 6), Rng, 0)
If Err > 0 Then
'valor não encontrado
Err.Clear
Else
'tranfere os dados
Plan1.Cells(i, 2) = Plan2.Cells(indice, 2)
Plan1.Cells(i, 3) = Plan2.Cells(indice, 3)
Plan1.Cells(i, 7) = Plan2.Cells(indice, 7)
Plan1.Cells(i, 8) = Plan2.Cells(indice, 8)
Plan1.Cells(i, 9) = Plan2.Cells(indice, 9)
End If
Next
End Sub