Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Doppelte Einträge auf sheet löschen
Markus
Tach zusammen
Habe hier eine alte Datei von Oppermanns gefunden. Find ich echt gut; nur wie bekomme ich es hin das ich bei einem Neueintrag nicht wieder den aktualisierten Datensatz drunterschreibe? Kann ich das verhindern, oder gibt es eine andere Möglichkeit die doppelten Einträge zu löschen? Am besten per VBA.
https://www.herber.de/bbs/user/4908.xls
Thanx a lot
Danke dem LOT wie der Engländer zu sagen pflegt........;o)
Gruß
Markus

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

Betreff
Benutzer
Anzeige
AW: Doppelte Einträge auf sheet löschen
Christoph
Hi Markus,
es stellt sich die Frage, was denn sonst mit den neuen Einträgen passieren soll.
Aber zu deiner eigentlichen Frage, wie man doppelte Einträge löscht, hier mal ein Beispiel:
löscht die Zeilen, in denen in SpalteA Einträge mehrfach vorkommen.
Voraussetzung: Die Werte sind nach SpalteA sortiert.
Gruß
Christoph
('ne rückmeldung wäre nett)
Option Explicit

Sub LoeschDoppelte()
Dim i As Integer
For i = 20 To 2 Step -1
If Cells(i - 1, 1) = Cells(i, 1) Then
Rows(i).Delete Shift:=xlUp
End If
Next i
End Sub

Anzeige
AW: Doppelte Einträge auf sheet löschen
Markus
Hi Christoph
Erst einmal Danke für die schnelle Antwort. Zu deinem Code: der funzt auch, allerdings löscht er mir den letzten Eintrag den ich als letztes bearbeitet habe. Es sollte aber so sein das ich wenn ich einen Datensatz bearbeitet habe den alten suchen kann um den zu löschen. d. h. wenn ich einen alten Datensatz bearbeite schreibt sich ja der neue in das Blatt. Nun muss ich den letzten Eintrag per Makro finden; den ich dann löschen kann. In dem Fall wird der alte Eintrag auch hinfällig. Ich will hoffen das ich mich nicht zu kompliziert ausdrücke.
Nochmals Danke
Markus
AW: Doppelte Einträge auf sheet löschen
Christoph
Hi Markus,
wenn es sich nun so verhält, dass der neueste Eintrag immer in der letzten Zeile steht (wie es in dieser UserForm der Fall ist), dann kannst du natürlich auch von dieser Zeile aus aufwärts suchen und alle anderen Zeilen löschen, deren Eintrag in SpalteA mit der neuesten Zeile übereinstimmt.
Die SpalteA ist hierbei nur ein Beispiel, dass lässt sich natürlich noch variieren.
Gruß
Christoph
('ne Rückmeldung wäre nett)
Option Explicit

Sub LoeschDoppelte_II()
Dim i As Integer, LRow As Integer, strWert As String
LRow = Cells(Rows.Count, 1).End(xlUp).Row
strWert = Cells(LRow, 1).Value
For i = LRow - 1 To 2 Step -1
If Cells(i, 1) = strWert Then
Rows(i).Delete Shift:=xlUp
End If
Next i
End Sub

Anzeige
nochmal Hilfe
Markus
Danke nochmals für Deine Hilfe,
ich habe meine Arbeit jetzt nochmals durchdacht und möchte es jetzt ein wenig anders lösen.
Ist es möglich ein Makro zu schreiben, was mir aus einer Spalte einer bestimmten Tabelle, alle doppelten Einträge in einer anderen tabelle auflistet?
Ich weiß nicht so richtig wie ich da rangehen soll, denn soviel Erfahrung habe ich dann doch nicht.
Danke Dir
Markus
Doppelte Einträge nach Tabelle2 kopieren
Christoph
Hi Markus
das geht natürlich auch.
z.B für Spalte A in Tabelle1 nach Tabelle2
Dafür muss die Tabelle1 nach der SpalteA sortiert sein
Gruß
Christoph
('ne Rückmeldung wäre nett)
Option Explicit

Sub kopierDoppelte()
Dim i As Integer, k As Integer, LRow As Integer
LRow = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
For i = LRow - 1 To 2 Step -1
If Sheets("Tabelle1").Cells(i, 1) = Sheets("Tabelle1").Cells(i, 1) Then
k = k +1
Sheets("Tabelle1").Cells(i, 1).Copy Sheets("Tabelle2").Cells(k,1)
End If
Next i
End Sub

Anzeige
sortierung
Markus
Hallo Christoph,
dass mit der Sortierung geht leider nicht, kann man das Makro auch so umbauen, dass es egal ist wo der doppelte Eintrag steht.
Danke Dir schon wieder :-)
Markus
doppelte kopieren ohne sortieren
Christoph
Hi Markus,
Je nach Größe der Tabelle wird das kompliziert. Du müsstest die Werte in ein Array einlesen, innerhalb des Array sortieren, hier jene Werte die du haben willst (in dem Fall die doppelten) an ein zweites Array übergeben und dann kannst du das zweite Array in die neue Tabelle schreiben.
Dafür müsste man aber wissen, wie deine Tabelle aufgebaut ist und strukturiert ist.
Das ganze geht im "kleinen" Stil auch mit For-Schleifen o.ä., läuft dann aber entsprechend langsam.
mal als Bsp:
(hier werden die mehrfach vorkommenden Werte von Tabelle1 jeweils einmal in Tabelle2 geschrieben - wenn nicht noch irgendwo ein Fehler drin ist...).
Gruß
Christoph
('ne Rückmeldung wäre nett)
Option Explicit

Sub KopierDoppelte()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Integer, j As Integer, k As Integer, m As Integer
Dim BlnGefunden As Boolean
Set ws1 = Sheets("Tabelle1")
Set ws2 = Sheets("Tabelle2")
k = 1
For i = 1 To 20
BlnGefunden = False
For j = i + 1 To 20
If ws1.Cells(j, 1) = ws1.Cells(i, 1) Then
For m = 1 To k
If ws1.Cells(j, 1) = ws2.Cells(m, 1) Then
BlnGefunden = True
Exit For
End If
Next m
If BlnGefunden = False Then
k = k + 1
ws1.Cells(j, 1).Copy ws2.Cells(k, 1)
End If
End If
Next j
Next i
End Sub

Anzeige
AW: doppelte kopieren ohne sortieren
Markus
Hallo Christoph
Vielen Dank für deine Hilfe. Habe zwar schon eine Lösung gefunden, allerdings haben mich deine Antworten insgesamt weitergebracht. Ich habe den oben stehen Code in ein anderes Projekt mit eingebaut.
Nochmals Danke
Markus

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige