Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
488to492
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
488to492
488to492
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilenvergleich

Zeilenvergleich
25.09.2004 10:46:35
Helmut
Hallo,
ich habe ein kleines Problem - Bitte um Hilfe!
Ich habe in einer Excel-Mappe Daten gesammelt.
Leider sind viele der Daten doppelt (insgesamt ca. 6.000 Daten).
Nun muss ich die Daten, die doppelt sind rauslöschen.
Ich muss die Zeilen mit den Kriterien der Spalten D, K und M vergleichen.
Sind alle Daten der Spalten ident, dann muss die Zeile weg.
Sind sicher ein paar da, die das kennen. Bin in dem Bereich leider eine Niete.
Danke für die Hilfe

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenvergleich
25.09.2004 11:04:29
Oberschlumpf
TESTE ZUERST MIT EINER KOPIE DEINER DATEI!!!

Hi Helmut
versuch es mal so:

Sub ZellVergleich()
Dim liZeile As Integer
liZeile = 1
Do Until Range("A" & liZeile).Value = ""
If Range("D" & liZeile).Value = Range("K" & liZeile).Value And Range("D" & liZeile).Value = Range("M" & liZeile).Value Then
Rows(liZeile & ":" & liZeile).Select
Selection.Delete Shift:=xlUp
End If
liZeile = liZeile + 1
Loop
End Sub

Für diesen Bsp-Code gilt diese Voraussetzung:
1. In Spalte A muss in jeder Zeile ein beliebiger Wert stehen, da bei der ersten, auftretenden leeren Zelle das Makro beendet wird.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Zeilenvergleich
25.09.2004 11:24:03
Helmut
Merci - werd es gleich mal austesten!
AW: Zeilenvergleich
25.09.2004 11:38:58
Helmut
geht leider nicht - tut sich gar nichts.
Zusatz - in der Spalte a steht meist gar nichts.
ich habe bereits ein macro, das aber auch nicht ganz problemlos funktioniert. ab und zu löscht es alle doppelten raus, ab und zu nicht. ausserdem vergleicht es nur die doppelten in spalte d.
lg
helmut
AW: Zeilenvergleich
25.09.2004 12:04:54
Oberschlumpf
in welcher Spalte steht denn in JEDER Zelle ein Wert?
AW: Zeilenvergleich
25.09.2004 13:37:04
Helmut
hallo oberschlumpf :))
sorry, dass ich erst so späte antworte - musste noch was erledigen.
es steht nicht in jeder zelle ein wert. in manchen steht erst einer, wenn ich etwas erledigt habe.
ich setze mal einen sheet ein, damit du es dir vorstellen kannst.
der datensatz ist bereits bereinigt.
aber es warten noch so viele ;(
https://www.herber.de/bbs/user/11298.xls
lg
helmut
Anzeige
AW: Zeilenvergleich
25.09.2004 14:30:35
Oberschlumpf
Hi Helmut
Vielen Dank für das Bsp.
Wie ich da erkenne, steht doch in jeder Zeile eine Kundennummer, oder?
Also in Spalte F
Wenn dem so ist, dass also immer eine Kdnnr. vorhanden ist, dann ändere diese Zeile

Do Until Range("A" & liZeile).Value = ""

um in

Do Until Range("F" & liZeile).Value = ""

Jetzt wird der Code so lange ausgeführt, bis in Spalte F eine leere Zelle erreicht wird.
Wenn aber auch die Kdnnr. tatsächlich erst später eingetragen wird, dann musst Du eine Vorgabe machen, wie viele Zeilen auf jeden Fall überprüft werden sollen.
Versuch es mal so:

Sub ZellVergleich()
Dim liZeile As Integer
For liZeile = 1 to 7000
If Range("D" & liZeile).Value = Range("K" & liZeile).Value And Range("D" & liZeile).Value = Range("M" & liZeile).Value Then
Rows(liZeile & ":" & liZeile).Select
Selection.Delete Shift:=xlUp
End If
Next
End Sub

In diesem Bsp werden, mit der 1. Zeile beginnend, 7000 Zeilen nacheinander überprüft und bei Übereinstimmung der vorgegebenen Kriterien sofort gelöscht.
Sollte Deine Tabelle mehr als 7000 Zeilen betragen, musst Du den Wert entsprechend erhöhen.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Zeilenvergleich
25.09.2004 14:43:52
helmut
hallo thorsten,
werd es mal versuchen.
thx
AW: Zeilenvergleich
25.09.2004 15:20:16
helmut
funktioniert nach wie vor nicht.
läuft zwar alles durch, aber doppelte werden nicht gelöscht.
also die kundennummer (auf d) und nr1 sind immer da.
es muss aber die kundennummer mit nr1 und nr2 überprüft werden, weil ab und zu kundennummer und nr1 nicht die gleichen sind. dann muss die zeile stehen bleiben.
ab und zu kommt es vor, dass ein doppelter datensatz da ist, wo bei einem nur die nr1 da ist und beim zweiten ist auch eine nr2 da. dann müsste ich eigentlich die ohne nr2 löschen.
es ist so kommmmppplizeirttt *heul*
danke für deine mühe
Anzeige
AW: Zeilenvergleich
25.09.2004 16:14:08
PeterW
Hallo Helmut,
stell mal eine Beispielmappe, die in der Struktur deiner Originalversion entspricht mit ein paar Dummy-Datensätzen auf den Server. Und vergiss bitte nicht, in der Tabelle zu beschreiben, welche Datensätze warum gelöscht werden sollen.
Gruß
Peter
AW: Zeilenvergleich
25.09.2004 19:58:26
helmut
Hallo Peter
wäre super, wenn du mir helfen kannst.
Bin am verzweifeln.
habe eine datei mit beispielen angehängt.

Die Datei https://www.herber.de/bbs/user/11306.xls wurde aus Datenschutzgründen gelöscht

thx
helmut
AW: Zeilenvergleich
25.09.2004 20:23:08
Oberschlumpf
Hallo Helmut
Du hättest schon beim ersten Hochladen eines Bsp eine NICHT bereinigte Version Hochladen sollen.
Denn Du hast Deine Eingangsfrage falsch gestellt.
Zitat von Dir:
"Ich muss die Zeilen mit den Kriterien der Spalten D, K und M vergleichen.
Sind alle Daten der Spalten ident, dann muss die Zeile weg"
Hieraus verstehe ich, dass jeweils innerhalb JEDER ZEILE FÜR SICH danach gesucht wird, ob die Werte in Zelle D, K und M gleich sind.
Und auch andere Mitleser haben wohl nichts anderes verstanden, da kein weiterer sich an einer Lösung beteiligte - bis auf Peter.
Und nach DIESER Aufgabenstellung (Deine Frage) habe ich den VBA-Bsp-Code programmiert.
Das funktioniert natürlich nicht so, wie Du es Dir gewünscht hast, da Du mehrere Zeilen miteinander vergleichen willst, und NICHT die Werte in nur einer Zeile.
Na ja, mein Bsp-Code kannst Du vernachlässigen, da nicht geeignet für die eigentliche Aufgabenstellung.
Vielleicht hat Peter ja eine Lösung.
Bye
Thorsten
Anzeige
AW: Zeilenvergleich
25.09.2004 20:38:32
Helmut
Hallo Thorsten,
ist klar, hab ich mich vieleicht missverständlich ausgedrückt.
Sorry!
Danke dir trotzdem - und das meine ich ganz ehrlich!!
AW: Zeilenvergleich
25.09.2004 23:16:38
PeterW
Hallo Thorsten,
darf ich dir unabhängig von der nicht präzisen Aufgabenstellung einen Hinweis geben? Ein Code mit Delete ist problematisch, wenn von Zeile 1 bis Zeile n gelöscht wird.
Annahme: Zeile 4 ist aufgrund der Aufgabenstellung zu löschen. Zeile 4 wird wunschgemäß gelöscht. Damit wird aus Zeile 5 die Zeile 4, die im nächsten Schleifendurchlauf aber nicht mehr überprüft wird! Der sichere Weg ist in solchen Fällen von unten nach oben vorzugehen.
Gruß
Peter
Anzeige
AW: Zeilenvergleich
25.09.2004 23:23:32
Oberschlumpf
Hi Peter
Ja, da hast Du Recht. Diese Tatasache habe ich auf die Schnelle nicht bedacht.
Bye
Thorsten
AW: Zeilenvergleich
25.09.2004 22:33:35
PeterW
Hallo Helmut,
kann man davon ausgehen, dass doppelte Datensätze immer unmittelbar untereinander stehen oder können die auch beliebig verteilt sein? Für den zweiten Fall: ist es möglich, die Datensätze nach Spalte D zu sortieren bevor man ans Löschen geht?
Gruß
Peter
AW: Zeilenvergleich
26.09.2004 16:20:29
Helmut
Hallo Peter,
die daten werden immer geordnet. normalerweise nach spalte h und g - macht aber nichts. kann sie selbstverständlich nach d ordnen und dannach wieder auf h und g umordnen.
durch das ordnen stehen sie meist genau untereinander.
lg
helmut
Anzeige
AW: Zeilenvergleich
26.09.2004 18:28:34
PeterW
Hallo Helmut,
dann sortiere nach Spalte D und probier mal dies - tunlichst an einer Kopie. ;-)
Option Explicit

Sub Doppelte_Weg()
Dim lgRow As Long
For lgRow = Range("D65536").End(xlUp).Row To 3 Step -1
If Cells(lgRow, 4) = Cells(lgRow - 1, 4) Then
If Cells(lgRow, 11) = Cells(lgRow - 1, 11) Then
If Not IsEmpty(Cells(lgRow, 13)) Then
Rows(lgRow).Delete
Else
Rows(lgRow - 1).Delete
End If
End If
End If
Next
End Sub

Gruß
Peter
AW: Zeilenvergleich
26.09.2004 18:58:17
Helmut
*Smile* über das ganze Gesicht.
Einen kleinen Fehler hat das ganze allerdings noch.
Wenn ich zwei idente Datenzeilen habe, die sich aber durch einen Wert in der Spalte M unterscheiden (bei einem steht in der Spalte M nichts, beim zweiten steht was drin), dann löscht er nicht unbedingt den, der in der Spalte M keinen Wert aufweist (eigentlich sollte immer der gelöscht werden, der keinen zweiten Wert aufweist).
Eventuell hast du dafür auch noch eine Lösung.
Ich bin dir wirklich zu großen Dank verpflichtet.
Ich lösch schon den halben Tag Daten. Jetzt gehts mit Knopfdruck.
Meinem bisherigen Macro hab ich nämlich nicht ganz getraut.
lg
Helmut
Anzeige
AW: Zeilenvergleich
26.09.2004 19:09:57
PeterW
Hallo Helmut,
sorry, Flüchtigkeitsdenkfehler. In der inneren Bedingung müssen der If und Else Teil getauscht werden (würde ich vermuten ohne erneut getestet zu haben)

Sub Doppelte_Weg()
Dim lgRow As Long
For lgRow = Range("D65536").End(xlUp).Row To 3 Step -1
If Cells(lgRow, 4) = Cells(lgRow - 1, 4) Then
If Cells(lgRow, 11) = Cells(lgRow - 1, 11) Then
If Not IsEmpty(Cells(lgRow, 13)) Then
Rows(lgRow - 1).Delete
Else
Rows(lgRow).Delete
End If
End If
End If
Next
End Sub

Gruß
Peter
AW: Zeilenvergleich
26.09.2004 19:30:50
helmut
traum!!!
ich wollte die daten noch bis morgen bereinigen.
dachte mir - werd heut wohl noch bis 24 uhr arbeiten und morgen eben etwas früher aufstehen, damit ich fertig werde.
was soll ich da sagen - BIN SCHON FERTIG!!
vielen lieben dank - funktioniert alles bestens.
lg
helmut
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige