Página 2 de 2

Extrair dados de uma planilha com base em outra

Enviado: 16 Abr 2015 às 13:55
por OrfeuVBA
laennder

Obrigado pela ajuda é isso mesmo.

Não abusando muito poderia explicar o código para que eu possa entender o raciocínio?

Valeu pela ajuda!!!

Re: Extrair dados de uma planilha com base em outra

Enviado: 16 Abr 2015 às 14:05
por laennder
Vou tentar explicar passo a passo.

A linha abaixo verifica quantas linhas existem preenchidas na coluna 6 da Plan1
Código: Selecionar todos
ultimacelula = Plan1.Cells(Rows.Count, 6).End(xlUp).Row
Nesta linha eu defino o objeto Rng como todos os dados da Coluna "F" da Plan2
Código: Selecionar todos
Set Rng = Plan2.Range("F:F") ' Coluna de Cotas
A linha acima poderia ser substituída, por exemplo, pela linha abaixo:
Código: Selecionar todos
Set Rng = Plan2.Columns(6) ' Coluna de Cotas
Esta linha pode ser excluída, aproveitei o código do Alexandre e esqueci de apagar :lol: :lol:
Código: Selecionar todos
lin = 2
Aqui eu determino um loop que vai da linha 2 até a ultima linha encontrada (ultimacelula)
Código: Selecionar todos
For i = 2 To ultimacelula

Esta linha serve para caso ele dê um erro, não pare o código, e prossiga para a próxima linha do código.
Código: Selecionar todos
    On Error Resume Next
Utilizo a função CORRESP (Match) para verificar qual a posição da cota, na coluna F (Rng)
Código: Selecionar todos
indice = Application.WorksheetFunction.Match(Plan1.Cells(i, 6), Rng, 0)
Caso na linha anterior, ao procurar o código der um erro (Err > 0), ele limpa o erro, e não faz mais nada
Código: Selecionar todos
    If Err > 0 Then
        'valor não encontrado
        Err.Clear
Caso não seja um erro, ele transfere os dados, onde i é a linha que estou na Plan1 (ver loop For acima) e índice é a linha que encontrei a cota usando a função Match (ver acima também)
Código: Selecionar todos
    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

Mando verificar a próxima linha da planilha.
Código: Selecionar todos
Next

Extrair dados de uma planilha com base em outra

Enviado: 16 Abr 2015 às 14:10
por OrfeuVBA
Valeu!!!

Obrigado pela ajuda.