Excluir duplicados no Excel

Fao66
Membro
Membro
Status:
Mensagens: 19
Registro: 31 Mar 2009
Karma: [0] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Excluir duplicados no Excel

Mensagem por Fao66 » 26 Abr 2009

Prezados,

Solicito ajuda no seguinte:

Preciso iniciar a busca por valores repetidos e deletalos,

o código abaixo é executado da linha 2 até a linha 32,

preciso que ele vá até a última linha 65536.

O problema é que não sei como alterar o código.

Vocês podem me ajudar?

Obrigado e grande abraço a todos.



Código: Selecionar tudo
Sub excluir()

For linha = 1 To 30

procurado = Cells(linha, 5).Value

'procurar na coluna E da linha 2 até a 32

With ActiveSheet.Range(Cells(linha + 1, 5), Cells(32, 5))

Set C = .Find(procurado, Range("E32"), LookAt:=xlWhole, LookIn:=xlValues)

If Not C Is Nothing Then 'se foi encontrado conteúdo igual

primeiroEndere = C.Address

Do

If C.Value <> "" Then

C.Interior.ColorIndex = 4 'pintar célula de verde

End If

Set C = .FindNext(C)

Loop While Not C Is Nothing And C.Address <> primeiroEndere

End If

End With

Next linha

'excluir linhas com células pintadas de verde

For y = 1 To 32

li = 33 - y

If Cells(li, 5).Interior.ColorIndex = 4 Then

Rows(li).Delete

End If

Next y

End Sub
"Difícil é aprender a ler,
"o resto está escrito."

Avatar de usuário
Mauro Coutinho
Iniciado
Iniciado
Status:
Mensagens: 607
Registro: 17 Mar 2009
Karma: [116] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados

Mensagem por Mauro Coutinho » 26 Abr 2009

Fao, troque essa sua rotina por essa, ela vai pegar de E2 até o final da coluna:

Código: Selecionar tudo
Sub DeletaDuplicados()

    Dim LLoop  As Integer
    Dim LTestLoop As Integer
   
    Dim Lrows  As Integer
    Dim LRange As String
   
    Dim LCnt   As Integer
   
    'Valores da Coluna
    Dim LColA_1 As String
    Dim LColA_2 As String
   
    'Conta as linhas na planilhas com valores duplicados (deleta qualquer duplicado encontrado)
    Lrows = Range("e60000").End(xlUp).Row
    LLoop = 2
    LCnt = 0
   
    'Primeiro checa os valores na planilha
    While LLoop <= Lrows
        LColA_1 = "E" & CStr(LLoop)
       
        If Len(Range(LColA_1).Value) > 0 Then
       
            'Testa cada valor se é único
            LTestLoop = LLoop + 1
            While LTestLoop <= Lrows
                If LLoop <> LTestLoop Then
                    LColA_2 = "E" & CStr(LTestLoop)
         
                    'Valores duplicados em outras células
                    If (Range(LColA_1).Value = Range(LColA_2).Value) Then ' _

                        'Deleta os duplicados
                        Rows(CStr(LTestLoop) & ":" & CStr(LTestLoop)).Select
                        Selection.Delete Shift:=xlUp
                       
                        'Diminue a contagen das linhas deletadas
                        LTestLoop = LTestLoop - 1
                       
                        LCnt = LCnt + 1
                       
                    End If
                       
                End If
               
                LTestLoop = LTestLoop + 1
            Wend
           
        End If
       
        LLoop = LLoop + 1
    Wend
   
    'Seleciona range A1
    Range("A1").Select
    MsgBox CStr(LCnt) & " :- linhas foram deletadas."
   
End Sub


Abraços
Mauro Coutinho
A Dica foi util ? Colabore votando no meu Karma ao lado.

Avatar de usuário
adilsonsoledade
Guru
Guru
Status:
Mensagens: 2017
Registro: 01 Fev 2009
Localização: São Paulo / SP
Karma: [178] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados

Mensagem por adilsonsoledade » 26 Abr 2009

Creio que este código poder ser-lhes útil.
Observem que o o loop é decrescente, sendo desnecessário corrigir o contador quando ocorre a exclusão da linha.
[ ]s
Código: Selecionar tudo
Sub EliminarValoresRepetidos()
'Declarar variáveis
Dim ColSearch   As Integer
Dim LastRow     As Integer
Dim i           As Integer
Dim rgSearch    As Range
'Determinar a coluna a ser pesquisa.
'No exemplo a seguir, selecionamos a coluna A
ColSearch = 1
'Determinar a última linha preenchida da coluna pesquisada
LastRow = Cells(Rows.Count, ColSearch).End(xlUp).Row
'Atribuir o intervalo pesquisado com base na última linha preenchida
Set rgSearch = Range(Cells(1, ColSearch), Cells(LastRow, ColSearch))
'Loop para as linhas da coluna pesquisada, iniciando-se na última linha
'e decrescentemente chegando ao valor 2
For i = LastRow To 2 Step -1
'Se o valor da célula ocorrer mais do que uma vez, a linha correspondente é deletada
If Application.WorksheetFunction.CountIf(rgSearch, Cells(i, ColSearch)) > 1 Then Rows(i).Delete
Next i
End Sub

[ ]s
Adilson Soledade

Blog: usuariosdoexcel.wordpress.com
Facebook: facebook.com/usuariosdoexcel
Twitter: @usuariosdoexcel
A resposta foi útil? Vote no botão ao lado

Fao66
Membro
Membro
Status:
Mensagens: 19
Registro: 31 Mar 2009
Karma: [0] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados

Mensagem por Fao66 » 26 Abr 2009

Prezados,

A imagem abaixo mostra melhor o problema.

Tenho 2 problemas:

1- A planilha pode vir a ficar com mais colunas,

no ínicio ela ai até a coluna E agora vai até a J.

Qual ou quais linhas do código devo alterar quando o

numero de colunas almentar?


2- Como é uma planilha de cadastro posso ter nomes iguais com

outros dados diferentes.

Ex.: Nome Bairro Cep
Paulo Silva Copacabana 22031-100
Paulo Silva Botafogo 21247-050


Obrigado e grande abraço a todos.

"Difícil é aprender a ler,
"o resto está escrito."

Avatar de usuário
Mauro Coutinho
Iniciado
Iniciado
Status:
Mensagens: 607
Registro: 17 Mar 2009
Karma: [116] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados

Mensagem por Mauro Coutinho » 27 Abr 2009

Fao, sua solicitação inicial era para uma determinada coluna, mas na solicitação atual pergunto:

Como é feito esse cadastro ?
Digita-se direto na planilha linha a linha ou é por meio de formulário ?

Vi que tem o Nome em uma coluna e sobrenome em outra, e se tratando de uma planilha de CADASTRO aonde pode-se ter coincidencias de nomes mas pessoas e dados diferentes, eu sugiro que se CRIE um numero de cadastro para cada um associando a cada pessoa e usar a Validação na Coluna dos CODIGOS :
Vamos supor que o codigo de registro esteja na Coluna "A", voce usaria em Validação a formula:
=CONT.SE(A$2:A$11; A3) = 1
Assim não se repetiria o codigo, e se o Nome e Sobrenome fossem na mesma Linha, vamos supor na Coluna "B", tambem poderia usar a Validação para não ter repetição de nomes.

Devo ter um modelo de Palnilha de Cadastro aqui, se quiser posso disponibilizar para você, só que é atraves de VBA mas antes teria de fazer adaptações para seu caso.

abraços
Mauro Coutinho
A Dica foi util ? Colabore votando no meu Karma ao lado.

Fao66
Membro
Membro
Status:
Mensagens: 19
Registro: 31 Mar 2009
Karma: [0] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados

Mensagem por Fao66 » 27 Abr 2009

Prezados,

Antes de tudo obrigado pela ajuda.

Trabalho em uma consultoria e recebo as planilhas da operadora de planos de saúde.

Normalmente a planilha vem com valores duplicados como no exemplo anterior.

Por isso o ideal é que eu soubese como alterar o codigo para a coluna desejada,

pq quase toda vez a planilha tem um nº diferente de colunas.

E são muitas linhas tipo 10.000 ou mais.

Tenho que verificar se em todas as colunas os valores são diferentes.

Ex.: O Paulo Silva aparece 2 vezes, sendo que na coluna ENDEREÇO os dados

são diferentes, ou seja são 2 possoas diferentes.

Obrigado e grande abraço a todos.
"Difícil é aprender a ler,
"o resto está escrito."

Avatar de usuário
adilsonsoledade
Guru
Guru
Status:
Mensagens: 2017
Registro: 01 Fev 2009
Localização: São Paulo / SP
Karma: [178] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados no Excel

Mensagem por adilsonsoledade » 27 Abr 2009

Nesses casos, normalmente é necessário criar uma chave de Id, contatenando alguns campos. Por exemplo: Nome + Sobrenome + Data. E realizar a exclusão com base nas ocorrências únicas do ID. Não há problemas para a criação do código, mas vc é que tem conhecimento para determinar quantos e quais campos são necessários para criar a chave de Id.
Saberia dizer quantas colunas diferentes seriam necessárias? Feito isso podemos criar um código que permita que selecione estes critérios em tempo de execução, flexibilizando o processo de escolha.
[ ]s
Adilson Soledade

Blog: usuariosdoexcel.wordpress.com
Facebook: facebook.com/usuariosdoexcel
Twitter: @usuariosdoexcel
A resposta foi útil? Vote no botão ao lado

Fao66
Membro
Membro
Status:
Mensagens: 19
Registro: 31 Mar 2009
Karma: [0] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados no Excel

Mensagem por Fao66 » 28 Abr 2009

Prezado Adilson,

Para você entender melhor meu problema, abaixo consta um link com uma planilha.

Nessa planilha não posso ter dados repetidos, veja que em cada campo constam

valores unicos.

Ex.: Na linha onde consta o OMAR MIGUEL tenho, internação com o valor de 237933,47

e quantidade 85 e vários outros dados. Pode ser que eu tenha outra linha do OMAR MIGUEL

com outro valor de internação e outra quantidade.

O que preciso é eliminar a linha em que todos os dados sejam iguais.

Não posso ter limitação de linhas pois as planilhas podem ter de 10 linhas a 40.000 linhas

Não posso ter limitação de colunas pois em virtude do mês a quantidade de colunas pode aumentar.

Obrigado e garnde abraço

http://rapidshare.com/files/226718462/Detalhe_Utiliza__o.xls.html
"Difícil é aprender a ler,
"o resto está escrito."

Avatar de usuário
adilsonsoledade
Guru
Guru
Status:
Mensagens: 2017
Registro: 01 Fev 2009
Localização: São Paulo / SP
Karma: [178] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados no Excel

Mensagem por adilsonsoledade » 28 Abr 2009

Ex.: Na linha onde consta o OMAR MIGUEL tenho, internação com o valor de 237933,47 e quantidade 85 e vários outros dados. Pode ser que eu tenha outra linha do OMAR MIGUEL com outro valor de internação e outra quantidade.

Então posso considerar que o trio NOME+VALOR+QUANTIDADE representam uma chave única e excluir quaisquer registros que tenham estes atributos repetidos desconsiderando os demais campos?
[ ]s
Adilson Soledade

Blog: usuariosdoexcel.wordpress.com
Facebook: facebook.com/usuariosdoexcel
Twitter: @usuariosdoexcel
A resposta foi útil? Vote no botão ao lado

Fao66
Membro
Membro
Status:
Mensagens: 19
Registro: 31 Mar 2009
Karma: [0] Acrescente 1 ponto ao karma. Tire 1 ponto do karma

Re: Excluir duplicados no Excel

Mensagem por Fao66 » 28 Abr 2009

Prezado Adilson,

O problema está ai. Na imagem abaixo temos 4 linhas do Omar sendo que apenas 2 são iguais

as outras tem dados diferentes. Ou seja de 4 linhas temos que eliminar 1 das linhas duplicadas e

ficar com as outras 3 linhas.

Obrigado e garnde abraço

"Difícil é aprender a ler,
"o resto está escrito."

Próximo

Retornar para Excel

Quem está online

Usuários vendo este fórum: Google [Bot] e 6 visitantes

PUBLICIDADE