Ir para conteúdo

A partir do dia 19/11/2018, o foco do Fórum do BABOO é apenas Windows e Segurança Digital conforme informado no início de 2018.
As áreas que não têm relação com esses dois assuntos foram arquivadas e seus tópicos estão disponíveis para consulta na área Tópicos Antigos.

Ton Cruz

Macro para apagar linhas duplicadas - apenas a próxima linha igual (excel)

Mensagem Recomendada

Bom dia a todos!

Sou novo por aqui e necessito urgente de uma ajuda....

Tento a dias e não acho uma solução para meu problema, segue detalhes:

A regrar abaixo deverá ser aplicada para todas as colunas e linhas iguais entre A1 e N1000000

Primeira condição
SE Linha 1 for igual a linha 2, deletar linha 2 e copiar linha 3 para a 2
Quando Linha 1 for diferente da linha 2, não excluir linha 2 e não copiar linha 3 para a 2

Segunda condição
SE Linha 2 for igual a Linha 3, deletar linha 3 e copiar linha 4 para a 3
Quando linha 2 for diferente da linha 3 não deletar linha 3 e não copiar linha 4 para a 3

Terceira condição
SE Linha 3 for igual a linha 4, deletar linha 4 e copiar linha 5 para a 4
Quando linha 3 for diferente da linha 4 não deletar linha 4 e não copiar linha 5 para a 4

 

E assim sucessivamente.

 

Me ajudem ai pessoal Feras!
 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 horas atrás, Ton Cruz disse:

... necessito urgente de uma ajuda....
Os fóruns não são o canal adequado para se resolver "necessidades urgentes" pois a assistência prestada é gratuita e depende da disponibilidade de quem acessa o fórum para ajudar.

A regrar abaixo deverá ser aplicada para todas as colunas e linhas iguais entre A1 e N1000000
Realmente há dados na planilha até a linha 1.000.000 ?

... e copiar linha 3 para a 2 ~~~> isto é desnecessário pois ao deletar uma linha todos os registros existentes abaixo da linha deletada "sobem" uma linha.

 

sugestão - disponibilize uma amostra do seu arquivo Excel com alguns dados (máximo 10 linhas) e indique na própria planilha quais as linhas a excluir e explique o critério para a exclusão.


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!

Hehe... Desculpem e Obrigado pela Dica Osvaldo!!

Segue uma planilha como exemplo.

As linhas pintadas em amarelo são as que devem serem excluídas, devido a mesma ser idêntica a linha anterior em forma e conteúdo.  

No Documento original as linhas não estão pintadas, estão na mesma forma das que não estão pintadas, pintei apenas para destacar o critério que preciso.

A- Condição:

A1 - Primeira condição
SE Linha 1 for igual a linha 2, deletar linha 2 e copiar linha 3 para a 2
Quando Linha 1 for diferente da linha 2, não excluir linha 2 e não copiar linha 3 para a 2

A2 - Segunda condição
SE Linha 2 for igual a Linha 3, deletar linha 3 e copiar linha 4 para a 3
Quando linha 2 for diferente da linha 3 não deletar linha 3 e não copiar linha 4 para a 3

A3 - Terceira condição
SE Linha 3 for igual a linha 4, deletar linha 4 e copiar linha 5 para a 4
Quando linha 3 for diferente da linha 4 não deletar linha 4 e não copiar linha 5 para a 4

 

E assim sucessivamente.

 

B - Aplicação na planilha enviada

B1 - linha 1 é diferente de linha 2 -Macro não faz nada.

B2 - linha 2 é diferente de linha 3 - Macro não faz nada.

B3 - linha 3 é diferente de linha 4 -Macro não faz nada.

B4 - linha 4 é igual  a linha 5 -Macro deve deletar toda a linha 5, depois copiar linha 6 para a linha 5.

B5 - Após aplicação da macro conforme indicado no item B4 acima, linha 4 é diferente de linha 5 - Macro não faz nada. (agora linha 5 terá os dados que antes era da linha 6, e linha 6 passará a ter as informações da linha 7 e assim sucessivamente em toda a planilha).

B6 - Linha 5 é igual a linha 6 e linha 7 - Macro deve deletar toda a linha 6 e linha7, depois copiar linha 8 para a linha 6.

Espero que não esteja tal complicado.

 

Obrigado!

 

 

Pasta1.xlsx

Editado por Ton Cruz

Detalhamento

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se atende:

1. selecione 'A3:N18'

2. menu Dados / Remover Duplicatas / OK

Se atender e você quiser, poderá gravar uma macro enquanto faz o procedimento acima, depois coloque o código aqui se precisar se algum ajuste.


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite! Nesse caso não resolve pq essa opção excluir todas iguais. E no meu caso deve excluir apenas a linha atual se a anterior for igual.

Obrigado Osvaldo.

Se você puder me ajudar ou outra pessoa. Agradeço... To no prazo final...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 minutos atrás, Ton Cruz disse:

Nesse caso não resolve pq essa opção excluir todas iguais.
Não, amigo, não exclui todas iguais. Por exemplo se a linha 12 for igual à linha 13, o procedimento exclui a linha 13 e deixa a 12. Outro, se as linhas 30 a 40 são iguais, serão excluídas de 31 a 40 e a 30 será mantida.


E no meu caso deve excluir apenas a linha atual se a anterior for igual.
Não há que se dizer linha atual, no caso de duas linhas iguais a de cima será mantida e a de baixo será excluída. Mas se fosse o inverso não importaria, o que importa é excluir uma delas e manter a outra, isso é Remover Duplicatas.
No exemplo que você postou o procedimento exclui todas as linhas amarelas e mantém as 9 linhas não pintadas, que me parece é isso que você quer.

 

 

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A planilha original tem milhares de linhas idênticas, mas em linhas distintas.

Para meu caso, para não excluir incorretamente, teve ser excluída apenas se a linha anterior for igual a atual, pois se a atual for diferente da anterior a comparação se encerrar.

E utilizando a função citada, ela excluir todas iguais avaliando todas as linhas da planilha, mesmo que a próxima linha seja distinta, e dessa forma não resolve, pois preciso que exclua apenas se a linha anterior for igual a atual, se for diferente não é para deletar.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então por exemplo se a linha 25 for igual à linha 24 você quer excluir a linha 25 pois 24 e 25 são linhas vizinhas, porém se a linha 25 for igual à linha 8 você não quer excluir a linha 25, pois não são linhas vizinhas, embora ela seja duplicata, é isso?

A quantidade de linhas com dados talvez seja variável, a sua planilha atual tem quantas linhas com dados?


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se este código faz o que você deseja.

Sub ExcluiLinhaDuplicataVizinha()
 Dim k As Long, LR As Long, stK, stJ
  LR = Cells(Rows.Count, 2).End(3).Row
   Application.Calculation = xlCalculationManual
   Application.ScreenUpdating = False
   For k = LR To 5 Step -1
    stK = Join(Application.Transpose(Application.Transpose(Cells(k, 2).Resize(, 13))), "")
    stJ = Join(Application.Transpose(Application.Transpose(Cells(k - 1, 2).Resize(, 13))), "")
    If stK = stJ Then Rows(k).Delete
   Next k
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
End Sub


sugestão - faça os testes em planilhas com poucos dados, por exemplo na planilha de exemplo acima, e se o resultado for o desejado aplique na planilha com 100.000 linhas; para processar essa quantidade de linhas imagino de 10 a 15 minutos, dependendo da máquina.

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, preciso de uma programação dessa, só que não para remover valores duplicados visinhos e sim para valores distintos, presentes na planilha, mas com a condição de que se uma linha estiver com os dados exatamente iguais a outra, dai remover as duplicatas.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 horas atrás, william luiz disse:

 ... para remover valores distintos, ... mas com a condição de que se uma linha estiver com os dados exatamente iguais a outra, dai remover as duplicatas.

Confuso.

Você quer remover distintos ou duplicados ? Duplicados em quais colunas ?

menu Dados / Remover Duplicatas ~~~> não te atende ?


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×