Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1068to1072
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Doppelte Datensätze komplett löschen

Doppelte Datensätze komplett löschen
15.04.2009 10:59:09
Jürgen
Hallo Excel Experten,
ich habe folgendes Excel-Problem (im Archiv leider nichts passendes gefunden):
Ich habe eine Datei mit 2 Tabellenblättern:
- "DatenKopie" etwa 1200 Datensätze, variabel
- "Ursprungsdaten" etwa 1000 Datensätze, variabel
In beiden Tabellen sollen die Spalten A verglichen werden (Artikelnummern).
Die doppelten Datensätze (kompletten Zeilen) müssten im Tabellenblatt "DatenKopie"
komplett gelöscht werden, so dass nur die etwa 200 Datensätze übrigbleiben.
Wer kann mir hierzu weiterhelfen, wenn möglich eine VBA-Lösung.
Freundliche Grüsse
Jürgen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Datensätze komplett löschen
15.04.2009 11:16:48
Rainer
Im Prinzip relativ einfach:
Erst sortieren, damit alle doppelten Datensätze hintereinander stehen. Dann eine Schleife die prüft ob der aktuelle Datensatz = Datensatz eine Zeile zuvor, wenn ja dann löschen wenn nein dann stehen lassen.
Okay hier mal ein Ansatz:

Sub DoppeltLöschen()
Dim Zeile As Integer
Dim ZeileMax As Integer
With Sheets("DatenKopie")
ZeileMax = .Range("A65500").End(xlUp).Row
.Columns(1).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess (xlNo für keine Ü _
berschrift, xlYes für Überschrift), MatchCase:=False, Orientation:=xlTopToBottom
For Zeile = ZeileMax To 2 Step -1 ' die 2 geht davon aus das in Zeile 1 also A1 eine Ü _
berschrift steht
if .cells(Zeile, 1).Value = .cells(Zeile - 1, 1).Value Then
.rows(Zeile).Delete
End If
Next Zeile
End With
End Sub


Hoffe ich hab auf die Schnelle nix vergessen. ;)
Gruß
Rainer

Anzeige
AW: ohne VBA
15.04.2009 11:20:46
Daniel
Hi
- in "Datenkopie" eine Hilfsspalte einfügen mit der Formel (ab Zeile 1):
=ZählenWenn(Urspungsdaten!A:A;A1) und nach unten kopieren
- Autofilter aktivieren
- Hilfsspalte nach 0 filtern
- alle sichtbaren Zeilen ab Zeile 2 markieren und löschen
- Autofilter deaktvieren, Hilfsspalte wieder löschen
wenn du es als Makro brauchst, lass doch einfach den Recorder mitlaufen.
Gruß, Daniel
bin etwas Begriffsstutzig.
15.04.2009 11:26:00
Tino
Hallo,
nur zur Sicherheit frage ich nochmal nach.
So wie ich es verstehe, sollen die Zeilen die in Tabelle Artikelnummern enthalten sind gelöscht werden.
Beispiel:
In Artikelnummern steht
100
101
102
103
In DatenKopie steht
100
105
106
107
Nun soll in DatenKopie die Zeile mit der 100 gelöscht werden?
Gruß Tino
Anzeige
AW: Doppelte Datensätze komplett löschen
15.04.2009 12:38:46
Jürgen
Hallo Rainer,
Danke für die schnelle Antwort.
Ich habe Dein Makro getestet, es funktioniert aber nicht richtig.
Nach dem Durchlauf bleibt immer nur die Überschrift und die Zeile darunter stehen!?
Mir ist übrigens ein kleiner Fehler unterlaufen. Es sollen nicht die Spalten A,
sondern die Spalten B verglichen werden.
Gruß
Jürgen
AW: Doppelte Datensätze komplett löschen
15.04.2009 12:53:22
Tino
Hallo,
hier meine Version.
Bin erst heute Abend wieder Online.
Option Explicit

Sub Loesche_Doppelte()
Dim Bereich As Range
Dim LRow As Long
Dim iCalc As Integer

With Application
 .ScreenUpdating = False
 iCalc = .Calculation
 .Calculation = xlCalculationManual

With Sheets("Artikelnummern")
 LRow = .Cells(.Rows.Count, 2).End(xlUp).Row
End With

With Sheets("DatenKopie")
 Set Bereich = .Range("B1", .Cells(.Rows.Count, 2).End(xlUp))
 Set Bereich = Bereich.Offset(0, .Columns.Count - 2)
 Bereich.Offset(0, -1).FormulaR1C1 = "=ROW()"
 

    Bereich.FormulaR1C1 = "=IF(COUNTIF(Artikelnummern!R1C2:R" & LRow & "C2,RC2)>0,0,"""")"
 .Cells.Sort .Cells(1, .Columns.Count), xlAscending, , , , , , xlNo

    If Application.WorksheetFunction.CountIf(Bereich, 0) > 0 Then
     Bereich.SpecialCells(xlCellTypeFormulas, 1).EntireRow.Delete
    End If
  
  .Cells.Sort .Cells(1, .Columns.Count - 1), xlAscending, , , , , , xlNo
  
  .Columns(.Columns.Count).Delete
  .Columns(.Columns.Count - 1).Delete
End With
 
 
 .ScreenUpdating = True
 .Calculation = iCalc
End With

End Sub


Gruß Tino

Anzeige
AW: Doppelte Datensätze komplett löschen
15.04.2009 13:22:49
Rainer
Ist mir doch ein kleiner Fehler unterlaufen, Sort-Range falsch definiert. ^^
Hier der richtige Code und schon auf Spalte B umgestellt.

Sub DoppeltLöschen()
Dim Zeile As Integer
Dim ZeileMax As Integer
With Sheets("DatenKopie")
ZeileMax = .Range("A65500").End(xlUp).Row
Range("A1:D65500").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
MatchCase:=False, Orientation:=xlTopToBottom
' Es werden nur die Spalten A:D sortiert, brauchst Du mehr Spalten z.B. bis S dann ändere oben  _
D65500
' einfach auf S65500 ab
For Zeile = ZeileMax To 2 Step -1
If .Cells(Zeile, 2).Value = .Cells(Zeile - 1, 2).Value Then
.Rows(Zeile).Delete
End If
Next Zeile
End With
End Sub


Den habe ich jetzt schnell getestet und der läuft sauber durch. Immer unter der Bedingung das die Artikelnummern auch tatsächlich korrekt gleich geschrieben sind und in Spalte B ab Zeile 2 sich befinden (Leerzeilen stören durch die vorherige Sortierung nicht).
Gruß
Rainer

Anzeige
AW: Doppelte Datensätze komplett löschen
15.04.2009 13:26:21
Rainer
Ach ja ... die Erklärung die ich dazu geschrieben habe von wegen welcher Bereich sortiert wird und wie Du es abändern kannst, solltest Du rauslöschen wenn Du die Zeilen per Copy und Paste übernimmst. ;)
Gruß
Rainer
AW: Doppelte Datensätze komplett löschen
15.04.2009 16:31:57
Jürgen
Hallo Excel-Freunde,
ihr habt mich mit diversen Lösungen geradezu überhäuft.
Ich werde einige Zeit brauchen, um sie durchzutesten.
Es ist mit Sicherheit eine passende Lösung dabei.
Danke euch für eure Mithilfe
Gruß
Jürgen

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige