Como excluo valores repetidos (#Não remove valores duplicados #) em uma coluna excel?

0

Eu tenho as duas colunas de dados a seguir:

Location    Value
    A         1
    A         1
    B         2
    C         2
    D         3
    D         3
    E         4
    E         4
    F         5
    G         5

Se houver uma combinação duplicada de Location e Value , ela deverá ser DELETADA. Se eu usar a opção de remoção de duplicatas, as duplicatas serão removidas, mas manterá um dos valores repetidos e isso não é favorável para mim. Minha saída pretendida é esta:

Location    Value
    B         2
    C         2
    F         5
    G         5

Aqui está o que eu pensei e tentei até agora:

Eu concatenei as duas colunas e usei COUNTIF para obter uma contagem do número de vezes que um valor é repetido. Eu posso então filtrar a coluna count considerando apenas as contagens que são iguais a 1. Isso é mostrado aqui:

No entanto, este método não é viável para vários outros filtros e classificações que foram feitos na minha planilha.

Existe alguma outra sugestão para alcançar os mesmos resultados que eu tenho?

    
por Achyutha Mohan 16.10.2015 / 23:44

1 resposta

0

Usando o VBA:

Public Function allDuplicates()
    Dim a As Application
    Set a = Application
    Dim arrayRows() As Boolean
    maxCol = 2
    firstRow = 2
    Dim wks As Worksheet
    Set wks = ActiveSheet
    wks.Application.ScreenUpdating = False
    totalRows = wks.Cells(Rows.Count, "A").End(xlUp).Row
    ReDim arrayRows(totalRows)
    For i = firstRow To totalRows
        theRow = Join(a.Transpose(a.Transpose(wks.Range(Cells(i, 1), Cells(i, maxCol)))), Chr(0))
        For j = i + 1 To totalRows
            theOtherRow = Join(a.Transpose(a.Transpose(wks.Range(Cells(j, 1), Cells(j, maxCol)))), Chr(0))
            If theRow = theOtherRow Then
                arrayRows(i) = True
                arrayRows(j) = True
            End If
        Next j
    Next i
    For i = firstRow To totalRows
        If arrayRows(i) = True Then
            wks.Rows(i).Clear
        End If
    Next i
    Range("A1:B" & totalRows).Sort key1:=Range("A2:A" & totalRows), order1:=xlAscending, Header:=xlYes
    wks.Application.ScreenUpdating = True
    Message = MsgBox("Finished", vbInformation)
End Function

Abra o Visual Basic / Macros, adicione um módulo em ThisWorkbook , cole o código no lado direito e execute-o.

    
por 19.10.2015 / 12:32