Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Doppelte Zeilen in Excel löschen





Frage

Hi Leute, habe hier eine Excel Datei mit einigen hundert eMails die zeilenweise Untereinander geschrieben sind. Diese Datei (Tabelle) will ich jetzt durchsuchen lassen und alle eMail Adressen die doppelt sind löschen. Das heißt natürlich nicht komplett sondern nur die doppelten Einträge, ein Eintrag jeder Adresse sollte mir natürlich erhalten bleiben. Danke im Vorraus

Antwort 1 von want2cu

Hallo LowNoise,

vielleicht könntest du das über DATEN-FILTER-SPEZIALFILTER - KEINE DUPLIKATE lösen.

Ansonsten gibt es dafür bestimt eine Makro-Lösung ;-) (kann ich immer noch nicht)

CU
Klaus

Antwort 2 von Guenter

Hallo,

hier ist ein Makro, das ich bei Herber gefunden habe.
Spalte A enthält die zu überprüfenden Zellen.
Sub doppelteLöschen()
    Dim LastC As Long, x As Long
    LastC = Range("a65536").End(xlUp).Row
    For x = LastC To 1 Step -1
        If WorksheetFunction.CountIf(Range("a1:a" & x), Cells(x, 1)) > 1 Then
            Cells(x, 1).EntireRow.Delete
        End If
    Next
End Sub


Ich würde empfehlen, vorher eine Sicherheitskopie zu erstellen!

Gruß
Günter

Antwort 3 von nighty

hi alle

ich mag herberts site immer noch nicht,daher gleich eine verbesserung des makros von GUENTHER.bei dem von guenther werden 65 000 zeilen abgelaufen ,bei meinem modifizierten nur bis zur letzten beschriebenen zeile TATAAA(dank SICCI).

gruss nighty

nicht getestet schniff

Sub Makro1()
Dim LastC As Long, x As Long
Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
alta = LastCell.Row
A = LastCell.Row
Do While Application.CountA(Rows(A)) = 0 And A <> 1
A = A - 1
Loop
alta = A
altb = LastCell.Column
b = LastCell.Column
Do While Application.CountA(Columns(b)) = 0 And b <> 1
b = b - 1
Loop
altb = b
lzeile = alta
lspalte = altb
For x = 1 To lzeile + 1
If WorksheetFunction.CountIf(Range("a1:a" & x), Cells(x, 1)) > 1 Then
Cells(x, 1).EntireRow.Delete
End If
next x
End Sub


Antwort 4 von Guenter

@ nighty
Ich weiss nicht, was Du meinst?
Die For ... Next-Schleife fängt bei der letzten beschriebenen Zelle an.
Das wird erreicht durch:

LastC = Range("a65536").End(xlUp).Row


Aber

LastC = Cells(Rows.Count, 1).End(xlUp).Row


geht auch.

Gruß
Günter

Antwort 5 von nighty

hi guenther

oops ich sah wohl nur die 65000 ohjee

gruss nighty