Ir ao conteúdo
  • Cadastre-se

Excel Macro para excluir duplicados sem manter nenhum


Ir à solução Resolvido por Visitante,

Posts recomendados

Boa noite ao todos novamente, 

 

gostaria de saber se é possível ter uma macro que exclua itens duplicados que estejam em colunas diferentes, e ao excluir não mantem nenhum deles.

 

até onde eu sei quando se exclui itens duplicados sempre fica um deles, nesse caso quero excluir os dois duplicados de vez para remover de uma planilha.

 

deixei um exemplo em anexo.

 

um abraço.

DUPLICADOS.xlsx

Link para o comentário
Compartilhar em outros sites

Olá @Rafael nunes da silva 

 

Veja se a "gambiarra" que eu fiz resolve o seu problema.

Resolvi somente a  1ª possibilidade, mas a 2ª não é muito diferente.

Antes, vou explicar os passos. No final do post deixo a planilha disponível com o código.

  1. Inseri uma nova coluna para contar os repetidos dessa tabela (CONT.SE)
    image.png.e12ae7abcf9da82eedb92e70b6c67b8c.png
     
  2. Se a macro seguir com a fórmula, assim que excluir o primeiro dado da tabela, a fórmula, passa a contar que não há mais valores duplicados, o que é exatamente que não deve acontecer.
    Para resolver esse problema depois que a fórmula for colocada em todas as linhas, copiamos esses valores, e colamos sem fórmula, para que esse valor não mude automaticamente. (Colar Valores)
     
  3. Pela opção de excluir, selecionamos os dados onde a repetição for maior do que 1 e exclui deslocando o resto da tabela para cima.

A Macro que eu fiz, está seguindo todos esses passos.

 

Eu sugiro que assim que você abrir a planilha, abra o código, e siga linha por linha pressionando F8, Para ver como tudo funciona exatamente.

 

Sinta-se a vontade para voltar a perguntar se não entendeu alguma coisa.

 

Se o seu problema foi resolvido, lembre-se de marcar o tópico como Resolvido.

 

Anexo da planilha:

DUPLICADOS.rar

 

Link para o comentário
Compartilhar em outros sites

 

Sub ExcluiDuplicados()
 Dim LR As Long
  Application.ScreenUpdating = False
  With ActiveSheet
   .AutoFilterMode = False
   LR = .Cells(Rows.Count, 1).End(3).Row
   .Range("C3:C" & LR) = "=COUNTIF($A$3:$A$" & LR & ",A3)"
    If Evaluate("COUNTIF(C3:C" & LR & ","">1"")") > 0 Then
     .[A2:C2].AutoFilter 3, ">1"
     .Range("A3:B" & LR).EntireRow.Delete
     .AutoFilterMode = False
    End If
    .[C:C] = ""
  End With
End Sub

 

Link para o comentário
Compartilhar em outros sites

12 horas atrás, Vics disse:

Olá @Rafael nunes da silva 

 

Veja se a "gambiarra" que eu fiz resolve o seu problema.

Resolvi somente a  1ª possibilidade, mas a 2ª não é muito diferente.

Antes, vou explicar os passos. No final do post deixo a planilha disponível com o código.

  1. Inseri uma nova coluna para contar os repetidos dessa tabela (CONT.SE)
    image.png.e12ae7abcf9da82eedb92e70b6c67b8c.png
     
  2. Se a macro seguir com a fórmula, assim que excluir o primeiro dado da tabela, a fórmula, passa a contar que não há mais valores duplicados, o que é exatamente que não deve acontecer.
    Para resolver esse problema depois que a fórmula for colocada em todas as linhas, copiamos esses valores, e colamos sem fórmula, para que esse valor não mude automaticamente. (Colar Valores)
     
  3. Pela opção de excluir, selecionamos os dados onde a repetição for maior do que 1 e exclui deslocando o resto da tabela para cima.

A Macro que eu fiz, está seguindo todos esses passos.

 

Eu sugiro que assim que você abrir a planilha, abra o código, e siga linha por linha pressionando F8, Para ver como tudo funciona exatamente.

 

Sinta-se a vontade para voltar a perguntar se não entendeu alguma coisa.

 

Se o seu problema foi resolvido, lembre-se de marcar o tópico como Resolvido.

 

Anexo da planilha:

DUPLICADOS.rar 16 kB · 3 downloads

 

a principio, não está excluindo todos de uma vez

por exemplo se eu tiver umas 10 células duplicadas ele exclui 5 e depois é necessário rodar a macro novamente para excluir o restante

 
adicionado 4 minutos depois
3 horas atrás, osvaldomp disse:

 


Sub ExcluiDuplicados()
 Dim LR As Long
  Application.ScreenUpdating = False
  With ActiveSheet
   .AutoFilterMode = False
   LR = .Cells(Rows.Count, 1).End(3).Row
   .Range("C3:C" & LR) = "=COUNTIF($A$3:$A$" & LR & ",A3)"
    If Evaluate("COUNTIF(C3:C" & LR & ","">1"")") > 0 Then
     .[A2:C2].AutoFilter 3, ">1"
     .Range("A3:B" & LR).EntireRow.Delete
     .AutoFilterMode = False
    End If
    .[C:C] = ""
  End With
End Sub

 

Oi Osvaldo, 

 

não sei se fiz correto mas ao rodar a sua macro ele não exclui o que tiver duplicado na coluna "A"

Link para o comentário
Compartilhar em outros sites

  • Solução

 

O código que passei exclui todos os duplicados na coluna A, com qualquer quantidade de repetições e funciona em tabela com qualquer quantidade de linhas e com estrutura igual à estrutura do exemplo do post #1.

 

Se você não consegue aí, então disponibilize o seu arquivo Excel com o código instalado. Veja dicas na parte baixa desta postagem.

Link para o comentário
Compartilhar em outros sites

31 minutos atrás, osvaldomp disse:

 

O código que passei exclui todos os duplicados na coluna A, com qualquer quantidade de repetições e funciona em tabela com qualquer quantidade de linhas e com estrutura igual à estrutura do exemplo do post #1.

 

Se você não consegue aí, então disponibilize o seu arquivo Excel com o código instalado. Veja dicas na parte baixa desta postagem.

Realmente funcionou, eu estava digitando os itens na coluna C.

falha minha.

 

muito obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

7 horas atrás, Rafael nunes da silva disse:

a principio, não está excluindo todos de uma vez

por exemplo se eu tiver umas 10 células duplicadas ele exclui 5 e depois é necessário rodar a macro novamente para excluir o restante

 

Isso acontece porque a macro estava rodando somente na tabela que estava pronta na planilha, teria que ter uma adaptação no código.

Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!