2013-06-07 23 views
8

Ich habe ein Arbeitsblatt mit zwei Spalten: Datum und Name. Ich möchte alle Zeilen löschen, die genaue Duplikate sind und nur eindeutige Werte hinterlassen.Löschen Sie alle doppelten Zeilen Excel vba

Hier ist mein Code (was nicht funktioniert):

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 

Es ist "Like rng.Cells (Zähler) -1", die die Ursache-I "Type Mismatch" erhalten zu sein scheint.

+0

'rng.Cells (Zähler - 1)' –

+1

Haben Sie versucht, auf Daten gehen -> Duplikate entfernen? Oder müssen Sie VBA für diese bestimmte Anwendung verwenden? – fbonetti

+0

Die obige Codierung ist Teil einer Prozedur, die viel mehr Arbeit auf einem ziemlich großen Arbeitsblatt leistet, also möchte ich den ganzen Job mit einem Klick auf eine Schaltfläche erledigen. –

Antwort

23

Es gibt eine RemoveDuplicates Methode, die Sie verwenden können:

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

Danke. Das hat funktioniert. –

+2

Großartig. Bitte klicken Sie auf das Kontrollkästchen, um diese Antwort zu akzeptieren, wenn Sie es für nützlich hielten. Es hilft mir, diese süßen, süßen Karma-Punkte zu sammeln :) – fbonetti

+0

Es wird auch die leeren Reihen los. Ausgezeichnet! – CloseISQ

0

Die doppelten Werte in jeder Spalte mit einem einfachen können gelöscht werden für Schleife. Versuchen

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 
Verwandte Themen