Como remover linhas duplicadas com base em algumas colunas

11

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

Eu quero remover uma linha se as colunas A C D E F forem iguais (Ignore B ao calcular duplicatas, mas remova-a enquanto remove uma linha)

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

    
por user33949 13.03.2014 / 16:26

4 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 na comparação
  5. Pressione OK

Concluído

    
por 14.03.2014 / 05:45
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.

Isso é o que eu criei. Pode ser mais curto, mas é o truque:

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 isto faz é percorrer todas as linhas restantes usando o ActiveCell como um ponteiro para a Linha 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 estraguei algo em algum lugar, não hesite em me dizer :)

    
por 13.03.2014 / 17:34
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.

    
por 14.03.2014 / 08:41
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 segundas e terceiras linhas da tabela inteira. Então, o que eu fiz eu fiz uma nova coluna e deixou o valor da primeira linha vazia colocar me excluir na segunda e terceira linha. E então copiei os valores das três primeiras linhas dessa coluna específica (não da linha inteira) e colei sobre a coluna inteira da tabela. Agora, eu tinha "delete me" 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 contendo delete me. Você pode usar a mesma solução se quiser apagar a cada 2, 3 e 4 ou 2, 3, 4 e 5 ou mais ...

Espero que ajude alguém ....

    
por 28.11.2015 / 02:09