2013-06-07 45 views
8

Ho un foglio di lavoro con due colonne: Data e Nome. Voglio eliminare tutte le righe che sono duplicati esatti, lasciando solo valori univoci.Elimina tutte le righe duplicate Excel vba

Ecco il mio codice (che non funziona):

Sub DeleteRows() 

Dim rng As Range 
Dim counter As Long, numRows As Long 

With ActiveSheet 
    Set rng = ActiveSheet.Range("A1:B" & LastRowB) 
End With 
numRows = rng.Rows.Count 

For counter = numRows To 1 Step -1 
    If rng.Cells(counter) Like rng.Cells(counter) - 1 Then 
     rng.Cells(counter).EntireRow.Delete 
    End If 
Next 

End Sub 

E ' "Come rng.Cells (contatore) -1", che sembra essere la causa-ho "Non corrispondenza del tipo".

+0

Prova 'rng.Cells (contro - 1)' –

+1

Hai provato andando Dati -> Rimuovi duplicati? O hai bisogno di usare VBA per questa particolare applicazione? – fbonetti

+0

La codifica sopra è parte di una procedura che fa molto più lavoro su un foglio di lavoro abbastanza grande, quindi voglio fare l'intero lavoro con un clic di un pulsante. –

risposta

23

C'è un metodo RemoveDuplicates che si potrebbe usare:

Sub DeleteRows() 

    With ActiveSheet 
     Set Rng = Range("A1", Range("B1").End(xlDown)) 
     Rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes 
    End With 

End Sub 
+0

Grazie. Ha funzionato. –

+2

Grande. Fai clic sulla casella di controllo per accettare questa risposta se la trovi utile. Mi aiuta a accumulare quei dolci, dolci punti karma :) – fbonetti

+0

Elimina anche le righe vuote. Eccellente! – CloseISQ

0

I valori duplicati in una colonna possono essere cancellati con un semplice ciclo for.

Sub remove() 
Dim a As Long 
For a = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 
If WorksheetFunction.CountIf(Range("A1:A" & a), Cells(a, 1)) > 1 Then Rows(a).Delete 
Next 
End Sub 
Problemi correlati