Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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

Suchen - Vergleichen/Pruefen - Loeschen

Suchen - Vergleichen/Pruefen - Loeschen
Hendrik
Moin, moin!
Irgendwie komme ich in einer Stelle nicht weiter, die aber doch recht einfach sein soll
Zunaechst die Bsp.-Datei
https://www.herber.de/bbs/user/75186.xlsx
Ich moechte nun, dass die Spalte D nach einem Eintrag durchsucht wird und bei einem Treffer, mit den Eintraegen in Spalte C verglichen wird. Ergibt sich hierbei eine Ubereinstimmung, soll die ganze Zeile mit dem Treffer in C geloescht werden...
Mein Problem ist zum einen, dass in Spalte C vor den Ziffern immer noch "CHQ#" steht, wodurch ich mit dem Suchargument nicht zurecht komme.
Ebenfalls weiss ich nicht, wie ich diese Schleife erstelle, dass alle Eintraege in Spalte D auf Existenz in Spalte C geprueft werden...
Hoffe ich hab mich einigermassen verstaendlich ausgedrueckt.
Bin fuer jede Hilfe dankbar!
Hendrik
AW: Suchen - Vergleichen/Pruefen - Loeschen
07.06.2011 02:03:33
Mustafa
Hallo Hendrik,
vielleicht so :
Sub SuchenLöschen()
Dim strSuche1 As String, strSuche2 As String
Dim rngZelle1 As Range, rngZelle2 As Range
strSuche1 = InputBox("Suchbegriff eingeben")
For Each rngZelle1 In Range("D:D")
If rngZelle1 = strSuche1 Then
For Each rngZelle2 In Range("C17:C20")
strSuche2 = Right(rngZelle2, 6)
If strSuche2 = rngZelle1 Then
rngZelle2.EntireRow.Delete
End If
Next
End If
Next
End Sub

Rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.
AW: Suchen - Vergleichen/Pruefen - Loeschen
07.06.2011 04:22:21
Hendrik
Hi Mustafa,
in welcher Zeitzone treibst du dich eigentlich rum? Bin hier ja quasi mein persoenlicher Ansprechpartner aufgrund meiner Zeitzone hier in NZ ;)
Der Code laeuft schon sehr gut, hab nur noch ein "kleines" Problem... Momentan wird ja das Suchargument ueber die Inputbox eingeben. Ich wuerde dies aber gerne auch im hintergrund machen lassen, insbesondere weil die Anzahl der Reihen und Eintraege immer variabel ist...
Hatte daran gedacht, die Spalte D als Range zu definieren und dann einfach alle Zellen groesser Null an einen Vektor zu uebergeben und diesen Vektor dann von deinem Makro abarbeiten zu lassen... Nur krieg ich das einfach nicht, bin einfach zu unbeholfen...
Mein Ansatz war jetzt:
Sub SuchenLöschen()
Dim strSuche1 As String, strSuche2 As String
Dim rngZelle1 As Range, rngZelle2 As Range
Dim rng As Range, c As Range
Set rng = Range("D1:D100")
For Each c In rng
If c > 0 Then
Exit Sub
End If
Next c
'jetzt weiss ich nicht, wie ich den inhalt von c an strSuche1 uebergeben kann...
For Each rngZelle1 In Range("D1:D100")
If rngZelle1 = strSuche1 Then
For Each rngZelle2 In Range("C1:C100")
strSuche2 = Right(rngZelle2, 6)
If strSuche2 = rngZelle1 Then
rngZelle2.EntireRow.Delete
End If
Next
End If
Next
End Sub

Anzeige
AW: Suchen - Vergleichen/Pruefen - Loeschen
07.06.2011 05:03:15
Hendrik
Hab jetzt nochmal was dran geaendert...
Jetzt findet er aber seltsamer weise nur den zweiten Eintrag in der Spalte D und loescht daraufhin auch die passende Zeile... Irgend eine Idee woran das liegt?
Sub SuchenLöschen()
Dim strSuche1 As String, strSuche2 As String
Dim rngZelle1 As Range, rngZelle2 As Range
Dim rng As Range, c As Range
Set rng = Range("D1:D100")
For Each c In rng
If c > "" Then
strSuche1 = c.Value
End If
Next c
'denke der Fehler liegt bei der Uebergabe der Werte an die Variable...
For Each rngZelle1 In Range("D1:D100")
If rngZelle1 = strSuche1 Then
For Each rngZelle2 In Range("C1:C100")
strSuche2 = Right(rngZelle2, 6)
If strSuche2 = rngZelle1 Then
rngZelle2.EntireRow.Delete
End If
Next
End If
Next
End Sub
Und wenn ich die Liste erweitere macht er gar nichts mehr... Bin verwirrt ;)
Hilfe!
Beste Gruesse!
Anzeige
AW: Suchen - Vergleichen/Pruefen - Loeschen
07.06.2011 06:35:04
Mustafa
Hallo Hendrik,
ich arbeite auf Nachtschicht und nutze das Forum als Schlaftöter :-)
Falls sich bis heute abend keiner dem Fehler angenommen hat, schau ich gerne noch einmal rein.
Ich hab jetzt Feierabend und wünsche dir einen schönen Tag.
Gruß aus der Domstadt Köln.
AW: Suchen - Vergleichen/Pruefen - Loeschen
07.06.2011 22:55:33
Mustafa
Hallo Hendrik,
versuch mal diesen Code :
Sub SuchenLöschen()
Dim arrSuche(100) As Variant
Dim strSuche2 As String
Dim rngZelle1 As Range, rngZelle2 As Range
Dim intZiel As Integer
For Each rngZelle1 In Range("D1:D100")
If Not rngZelle1 = "" Then
intZiel = intZiel + 1
arrSuche(intZiel) = rngZelle1
End If
Next
For intZiel = 1 To UBound(arrSuche)
For Each rngZelle2 In Range("C17:C100")
strSuche2 = Right(rngZelle2, 6)
If strSuche2 = arrSuche(intZiel) Then
rngZelle2.EntireRow.Delete
End If
Next
Next
End Sub
Diser Code läuft die Spalte D von zeile 1 bis 100 durch und schreibt alle gefundenen Werte in ein Array wo platz für 100 Einträge sind.
Danach läuft er die Spalte C Zeile 17 bis 100 durch und löscht bei Übereinstimmung mit einem Wert aus dem Array die ganze Zeile.
Eventuelle Anpassungen scheinst du ja soweit im Griff zu haben, wenn nicht einfach wieder fragen.
Rückmeldung obs hilft wäre nett.
Gruß aus der Domstadt Köln.
Anzeige
AW: Suchen - Vergleichen/Pruefen - Loeschen
08.06.2011 01:04:53
Hendrik
Moin, moin!
Der Code ist schon sehr gut, nur habe ich dir/dem Forum wahrscheinlich eine etwas unglueckliche Beispieldatei als Referenz hier zur Verfuegung gestellt...
Wenn du dir diese mal anschauen koenntest?
https://www.herber.de/bbs/user/75204.xlsm
Hab den Code eingebunden, allerdings habe ich bei diesem Sheet das Problem, dass auch "falsche" Zeilen geloescht werden... Ich kann mir aber irgendwie nicht erklaeren wieso. Eigentlich sollten doch nur "nichtleere" Zellinhalte aus Spalte D an die Variable uebergeben werden und bei Uebereinstimmung mit der Spalte C dann geloescht werden.
Nun werden aber auch voellig unbeteiligte Zeilen geloescht... Ich kann deinen Code auch eigentlich sehr gut nachvollziehen, vll bis auf die Variable "arrSuche", aber finde nicht den Fehler.
Vll nochmal zur Erlaeterung der BspDatei, da ich den Fehler hier vermute...
Die Bereiche ueber "Bank Bal" sind variabel und die Daten werden per Makro importiert, darauf aufbauend werden diese CHQ# errechnet bzw. sollen geloescht werden.
Die Eintraege in Spalten B und C sind weiter unten (hier ab Zeile 39) sind konstant, verschieben sich aber logischerweise auch dynamisch je nach Anzahl der importieren Buchungen oberhalb von "Bank Bal"...
Mein groesstes persoenliches Defizit liegt einfach in dem Umgang mit dynamischen Bezuegen oder wie ich das nennen soll...
Waere super, wenn du - oder auch gerne ein anderer Experte hier - sich das nochmal anschauen koennte
Besten Dank und Gruesse vom anderen Ende der Welt :) !
Hendrik
Anzeige
AW: Suchen - Vergleichen/Pruefen - Loeschen
08.06.2011 02:08:13
Mustafa
Hallo Hendrik,
Ich habe den Fehler gefunden, es kommt dadurch zustande das das Array arrSuche Statisch mit 60 dimensioniert war.
Dadurch hat er erst die richtigen Werte gelöscht und im anschluss dann aber auch alle Zellen die in Spalte C leer waren, weil auch der rest des Arrays leer war.
Dieser Code sollte jetzt auch bei dir funktionieren.
Sub delete_Cheque()
Dim arrSuche As Variant
Dim strSuche2 As String
Dim rngZelle1 As Range, rngZelle2 As Range
Dim intZiel As Integer
intZiel = WorksheetFunction.Count(Range("D:D"))
ReDim arrSuche(intZiel)
intZiel = 0
For Each rngZelle1 In Range("D1:D50")
If Not rngZelle1 = "" Then
intZiel = intZiel + 1
arrSuche(intZiel) = rngZelle1
End If
Next
For intZiel = 1 To UBound(arrSuche)
For Each rngZelle2 In Range("C5:C60")
strSuche2 = Right(rngZelle2, 6)
If strSuche2 = arrSuche(intZiel) Then
rngZelle2.EntireRow.Delete
End If
Next
Next
End Sub

Rückmeldung wäre nett.
Gruß aus Köln.
Anzeige
AW: Suchen - Vergleichen/Pruefen - Loeschen
08.06.2011 03:42:45
Hendrik
Es funktioniert!!! Ein Traum, vielen DANK!
Wuensch Dir noch eine angenehme Schicht und wir sprechen uns sicherlich noch einmal hier :)
Vielen Dank!!
Hendrik
Danke für die Rückmeldung owT
08.06.2011 04:06:42
Mustafa

Gruß aus Köln

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige