Ir ao conteúdo

Excel Macro Validação de Dados e Copia de Linhas com Colunas Específicas


Ir à solução Resolvido por Muca Costa,

Posts recomendados

Postado

Caros, boa tarde. 

 

Poderiam em ajudar com um macrozinho? rs

 

Tenho uma planilha onde atualizo frequentemente uma de suas abas (Planilha2), e necessito de uma macro que atualize as informações que eu precise em outra aba (Planilha1), porém as colunas são de ordens diferentes das que tenho na "Planilha2", e também preciso garantir que, a informação que eu estou transferindo já não esteja na "Planilha1".

 

Em mais detalhes, preciso que, toda vez que eu der o comando, seja verificado se os dados da coluna B (Planilha2) não estão na coluna A (Planilha1), e caso não estejam, sejam copiado e colados do seguinte modo:

 

image.png.6104e3d5fe175905cb5dfc9a82c64c67.png

 

* A seta indica qual dado corresponde a informação que preciso necessito copiar na Planilha1 para a Planilha2

** As letras em parenteses corresponde a coluna dos dados.

 

Por fim, toda vez que eu rodar a macro, não posso perder dados que já estejam na Planilha1, não podendo então copiar sobrepondo o já existente, e sim incluir em linha abaixo.Pasta1.xlsx

 

Postado

@Muca Costa ,

 

Até gostei da planilha, mas não entendi o código dela, consegue me explicar as etapas dele para que tente adaptar?

adicionado 15 minutos depois

Eu adaptei o código abaixo abaixo para somente efetuar a cópia, mas não sei o que editar nele para não copiar valores repetidos. 

Citação

Sub Teste()


Dim P As String, UltimaLinha As String, Lin As String, i As Integer
    P = Planilha1.Cells(Rows.Count, "A").End(xlUp).Row + 1
   
    
    UltimaLinha = Planilha2.Cells(Rows.Count, "A").End(xlUp).Row
    Lin = P
    For i = 3 To UltimaLinha

    Planilha1.Cells(Lin, 1) = Planilha2.Cells(i, 2)
    Planilha1.Cells(Lin, 3) = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 4) = Planilha2.Cells(i, 22)
    Planilha1.Cells(Lin, 6) = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 7) = Planilha2.Cells(i, 21)
    Planilha1.Cells(Lin,  = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 9) = Planilha2.Cells(i, 108)
    Planilha1.Cells(Lin, 12) = Planilha2.Cells(i, 19)
    Planilha1.Cells(Lin, 17) = Planilha2.Cells(i, 23)
    Planilha1.Cells(Lin, 24) = Planilha2.Cells(i, 17)
    Planilha1.Cells(Lin, 25) = Planilha2.Cells(i, 18)
    Planilha1.Cells(Lin, 18) = Planilha2.Cells(i, 106)


    Lin = Lin + 1
    
    Next
    
End Sub

 

  • Solução
Postado
Sub Teste()
Dim P As String, UltimaLinha As String, Lin As String, i As Integer
    P = Planilha1.Cells(Rows.Count, "A").End(xlUp).Row
    Planilha1.Range("A2:R" & P) = ""
    UltimaLinha = Planilha2.Cells(Rows.Count, "A").End(xlUp).Row
    Lin = 2
    For i = 3 To UltimaLinha

    Planilha1.Cells(Lin, 1) = Planilha2.Cells(i, 2)
    Planilha1.Cells(Lin, 3) = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 4) = Planilha2.Cells(i, 22)
    Planilha1.Cells(Lin, 6) = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 7) = Planilha2.Cells(i, 21)
    Planilha1.Cells(Lin, 8) = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 9) = Planilha2.Cells(i, 108)
    Planilha1.Cells(Lin, 12) = Planilha2.Cells(i, 19)
    Planilha1.Cells(Lin, 17) = Planilha2.Cells(i, 23)
    Planilha1.Cells(Lin, 24) = Planilha2.Cells(i, 17)
    Planilha1.Cells(Lin, 25) = Planilha2.Cells(i, 18)
    Planilha1.Cells(Lin, 18) = Planilha2.Cells(i, 106)

    Lin = Lin + 1
    
    Next
    MsgBox "Filtro finalizado"
End Sub

 

  • Obrigado 1
Postado

@Muca Costa Eu adaptei o código abaixo abaixo para somente efetuar a cópia, mas não sei o que editar nele para não copiar valores repetidos. 

Citação

Sub Teste()


Dim P As String, UltimaLinha As String, Lin As String, i As Integer
    P = Planilha1.Cells(Rows.Count, "A").End(xlUp).Row + 1
   
    
    UltimaLinha = Planilha2.Cells(Rows.Count, "A").End(xlUp).Row
    Lin = P
    For i = 3 To UltimaLinha

    Planilha1.Cells(Lin, 1) = Planilha2.Cells(i, 2)
    Planilha1.Cells(Lin, 3) = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 4) = Planilha2.Cells(i, 22)
    Planilha1.Cells(Lin, 6) = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 7) = Planilha2.Cells(i, 21)
    Planilha1.Cells(Lin,  = Planilha2.Cells(i, 14)
    Planilha1.Cells(Lin, 9) = Planilha2.Cells(i, 108)
    Planilha1.Cells(Lin, 12) = Planilha2.Cells(i, 19)
    Planilha1.Cells(Lin, 17) = Planilha2.Cells(i, 23)
    Planilha1.Cells(Lin, 24) = Planilha2.Cells(i, 17)
    Planilha1.Cells(Lin, 25) = Planilha2.Cells(i, 18)
    Planilha1.Cells(Lin, 18) = Planilha2.Cells(i, 106)


    Lin = Lin + 1
    
    Next
    
End Sub

 Deu certo! você é o cara!

 

Obrigado. 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!