Como remover linhas duplicadas com base em algumas colunas


11

Eu tenho uma planilha do Excel que contém linhas duplicadas

Desejo remover uma linha se suas colunas ACDEF forem iguais (ignore B ao calcular duplicatas, mas remova-a ao remover uma linha)

No momento, ele ignora B durante a comparação e a exclusão.


Você pode adicionar uma captura de tela com um antes e um depois desejado? Eu estou lutando para imagem que você precisa (sorry)
Dave

Portanto, quaisquer valores duplicados nas colunas A, C, D, E, F resultarão em uma exclusão de linha inteira, mantendo a primeira instância da duplicata? E se A1 corresponder a A2, mas C2 corresponder a C3, a linha 2 será excluída?
Raystafarian

Respostas:


18

No Excel 2013

  1. Selecionar todos os dados
  2. Selecione a guia Dados -> Remover duplicatas
  3. Marque "Minhas colunas têm cabeçalhos" se seus dados tiverem cabeçalhos de coluna.
  4. Desmarque todas as colunas que você NÃO gostaria de usar em comparação
  5. pressione OK

Feito


Não, isso procura por linhas semelhantes a outras linhas. Eu também pensei isso, mas é uma solução para uma questão diferente :)
Garrulinae

@Garrulinae O que você está dizendo, você pode explicar como isso não funciona? Parece resposta correta à pergunta do OP.
TheCrazyProgrammer

@TheCrazyProgrammer - Examinando isso mais de 2 anos depois, percebo que a pergunta do OP " Quero remover uma linha se suas colunas ACDEF forem iguais " pode ser interpretada de duas maneiras diferentes. Entendi que, se essas colunas são iguais umas às outras nesta linha . Esta resposta assume que isso significa se os valores nas colunas nesta linha são iguais a outra linha . Em retrospectiva, essa suposição parece estar correta, principalmente porque foi marcada como a resposta correta.
Garrulinae 4/08/16

@Garrulinae Gotcha. Agora eu vi e entendi sua resposta. Em uma nota lateral, estou surpreso que a funcionalidade exigida pelo OP (e por mim) exista como um botão simples no Excel, mas pesquisar no Google fornece vários artigos que fazem coisas complicadas que, por um momento, me fizeram duvidar dessa resposta.
TheCrazyProgrammer

@TheCrazyProgrammer, também tenho uma nota lateral - acabei de perceber que foi o OP quem postou esta resposta! Obviamente, é a resposta correta, mas é uma pena que a pergunta não tenha sido mais clara.
Garrulinae 5/08/19

1

Se eu entendi corretamente, dadas as linhas 1 e 2, você deseja excluir uma linha 2 se e somente se A1 = A2, C1 = C2, D1 = D2, E1 = E2 e F1 = F2.

Isto é o que eu vim com. Provavelmente poderia ser mais curto, mas funciona:

Sub DeleteDuplicate()
Dim current As String
ActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
    current = ActiveCell.Address
    ActiveCell.Offset(1, 0).Activate
    Do While ActiveCell.Value <> ""
        If ((ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) And (ActiveSheet.Range(current).Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value) And (ActiveSheet.Range(current).Offset(0, 5).Value = ActiveCell.Offset(0, 5).Value)) Then
            ActiveSheet.Rows(ActiveCell.Row).Delete
        Else
        ActiveCell.Offset(1, 0).Activate
        End If
    Loop
    ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub

O que isso faz é percorrer todas as linhas restantes usando o ActiveCell como um ponteiro para a linha que está sendo avaliada e armazenando a célula da linha "original" na variável atual . Quando o loop termina, a célula abaixo da corrente é ativada e o loop de avaliação interna é iniciado novamente.

Se eu errei em algum lugar, não hesite em me dizer :)


1

Adicione esta fórmula em cada linha, por exemplo; na coluna G:

=IF(AND(A2=C2,A2=D2,A2=E2,A2=F2),"DELETE ME","")

Isso dará um resultado como:

A   B   C   D   D   F   G
-   -   -   -   -   -   -
x   o   x   x   x   x   DELETE ME
x   x   x   x   x   o   
x   x   x   x   x   x   DELETE ME
x   o   o   x   x   x   

Em seguida, crie um filtro na coluna G para as linhas que dizem 'DELETE ME' e exclua-as.


0

@ Garrulinae

Eu usei sua ideia como inspiração. Eu tinha muitas linhas e o que eu queria era excluir as linhas que continham valores duplicados de uma coluna. Se eu usar Remover duplicatas nessa coluna, ele removerá apenas os dados dessa coluna e não a linha inteira. Eu queria excluir todas as linhas 2 e 3 da tabela inteira. Então, o que eu fiz, criei uma nova coluna e deixei o valor da primeira linha vazio, coloque delete me na segunda e terceira linha. E, em seguida, copiei apenas os valores das três primeiras linhas dessa coluna em particular (não a linha inteira) e colei sobre toda a coluna da tabela. Agora, eu tinha "me excluído" em cada segunda e terceira linha da coluna inteira. Então eu só tenho que classificar os valores dessa coluna e excluir todas as linhas que contêm delete me. Você pode usar a mesma solução se desejar excluir todos os segundo, terceiro e quarto ou segundo, terceiro, quarto e quinto anos ou mais ...

Espero que ajude alguém ....


2
Eu não entendo completamente o que você está dizendo. Em vez de descrever o que você fez, você pode nos mostrar que fórmula (s) você usou, apresentar alguns dados de exemplo e mostrar como sua resposta funciona nesses dados?
28915 Scott Scott
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.