Anzeige
Archiv - Navigation
1344to1348
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 Zeile löschen

Doppelte Zeile löschen
01.02.2014 20:49:22
Elmar
Hallo Experten,
ich bräuchte mal professionelle Hilfe...
Ich habe eine Tabelle, in der in Spalte "D" bei einzelnen Zeilen der gleichen Code drin steht (z.B. 569876543JJ). Die maximal zwei Zeilen mit dem gleichen Code stehen in der Tabelle immmer direkt untereinander (also z.B. in Zeile 8 und 9 und dann wieder in 45 und 46 und dann in 340 und 341 usw.). Dazwischen stehen andere Datensätze, die nicht verändert werden dürfen. Nun soll von den doppelten Datensätzen immer der erste (also im Beispiel die Datensätze der Zeilen 8,45 und 340) gelöscht werden. Die Gesamtzahl aller Datensätze ist immer unterschiedlich, deshalb muss das irgendwie dynamisch abgefragt werden.
Kann mir jemand helfen hierzu, wäre klasse!!
Grüße
Elmar

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Zeile löschen
01.02.2014 21:17:26
Hajo_Zi
Hallo Elmar,
Option Explicit
Sub Doppelte()
Dim LoI As Long
Dim LoLetzte As Long
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 4)), Cells(Rows.Count, 4).End(xlUp).Row, Rows. _
Count)
For LoI = LoLetzte To 1 Step -1
If WorksheetFunction.CountIf(Range(Cells(LoLetzte, 4), Cells(LoI, 4)), Cells(LoI, 4)) >  _
1 Then
Rows(LoI).Delete
End If
Next LoI
End Sub

AW: Doppelte Zeile löschen
01.02.2014 22:13:29
Elmar
Hallo Hajo,
im ersten Test klappt es gut, DANKE
Noch eine Frage: Kann man noch irgendwie einen Zähler einbauen, wieviel Datensätze gelöscht wurden?
Grüße
Elmar

Anzeige
Zähler = Zähler + 1
01.02.2014 22:39:42
Matthias
Hallo
Du brauchst doch immer nur nach
Rows(LoI).Delete
eine weitere Variable hochzählen
also z.B. so
Rows(LoI).Delete
x=x+1

Zu Beginn des Code schön sauber deklarieren
Dim X as Long
Jedesmal wenn eine Zeile gelöscht wird erhöht sich x um den Zähler EINS
Am Ende gibst Du eine MsgBox aus.
Gruß Matthias

AW: Doppelte Zeile löschen
02.02.2014 09:22:08
Hajo_Zi
Hallo Elmar,
Dim LoZaehler as Long
Rows(LoI).Delete
LoZaehler=LoZaehler+1
Next LoI
msgbox "Es wurden " & =LoZaehler & " Datensätze gelöscht"
Gruß Hajo

Anzeige
AW: Doppelte Zeile löschen
03.02.2014 20:59:42
Elmar
Hallo Hajo,
nochmals DANKE für die Hilfe, alles bestens
Elmar

Schade ...
04.02.2014 00:52:24
Matthias
Hallo
Naja ca 9 Std. vor Hajos Rückmeldung habe ich Dir ja das Gleiche vorgeschlagen.
Das Deine Antwort nun explizit an Hajo adressiert war find ich persönlich sehr schade.
Aber egal. Ich werd Dich in Zukunft auch ignorieren.
Gruß Matthias

Doppelte Datensätze / AW Schade
04.02.2014 08:53:27
Elmar
Hallo Matthias, hallo Hajo,
zunächst mal sorry an Matthias, natürlich hast Du Recht und ich wollt Dich auch nicht ignorieren, ist einfach passiert in der Hektik grade hier bei mir. Deshalb , wenn auch verspätet, DANKE an Dich.
Ich bin übrigens schon so oft so froh gewesen, dass es Leute wie Euch gibt....
Nun komme ich nochmal mit einer Bitte um Hilfe, denn meine Arbeitsmappen, in denen das Makro greift sind sehr groß. Nun habe ich eben erst rausgefunden, dass das Makro auf jeden Fall die "Doppelten" rausholt wie gewünscht und dabei aber auch andere Zahlenreihen mit löscht (bei 8000 Datensätze etwa 20 zuviel / zu unrecht, das ist zwar nicht viel, aber eben doch schlecht für meine Auswertung..). Nur kann ich den Grund dafür nicht finden. Möglichwerweise deshalb, weil es Zahlenreihen gibt, die in den ersten 15 Ziffern gleich sind und nur die letzten 3 oder 4 sind anders. Das dürfte aber doch normal nichts ausmachen, oder?
Vielleicht habt Ihr eine Idee, DANKE
Elmar

Anzeige
AW: Doppelte Datensätze / AW Schade
04.02.2014 11:02:00
fcs
Hallo Elmar,
bei dem Vorschlag von Hajo werden scheinbar die Inhalte der Zellen in dem Range VBA-intern in Zahlen umgewandelt. Da Excel nur 15 signifikante Ziffern verwaltet werden die 18 Ziffern langen Zeichenfolgen als Zahlen gerundet und es kommt zu scheinbaren Dopplungen.
Da die Dopplungen jeweils in aufeinander folgenden Zeilen stehen kann man auch mit einem direkten Vergleich der Zellinhalte arbeiten.
Gruß
Franz
Sub Doppelte_2()
Dim LoI As Long, LoCount As Long
Dim LoLetzte As Long
Application.ScreenUpdating = False
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 4)), Cells(Rows.Count, 4).End(xlUp).Row, _
Rows.Count)
'bei allen Doppelten den Eintrag in der 1. Zeile löschen
For LoI = LoLetzte To 1 Step -1
If Cells(LoI, 4) = Cells(LoI + 1, 4) Then
'        If Cells(LoI, 4).Text = Cells(LoI + 1, 4).Text Then
Cells(LoI, 4).ClearContents
LoCount = LoCount + 1
End If
Next LoI
Application.ScreenUpdating = True
If LoCount > 0 Then
'Alle leeren Zellen in Spalte D löschen
With Range(Cells(1, 4), Cells(LoLetzte, 4)).SpecialCells(xlCellTypeBlanks)
.EntireRow.Delete
End With
End If
MsgBox "es wurden " & LoCount & " doppelte gelöscht"
End Sub

Anzeige
AW: Doppelte Datensätze / AW Schade
04.02.2014 15:37:07
Elmar
Hallo Franz,
danke für den Tipp und den Code, das mit den langen Codes hätte ich vorher schreiben sollen....
Nun funktioniert es aber bestens
Grüße
Elmar

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige