Moin Leute, ein guten Rutsch erstmal alle zusammen und ein fröhliches neues Jahr :) Ich hoffe ihr konntet alle die Zeit mit Familie und Freunden genießen.
Nun zu meinem Problem. Wenn eine Bsp-Datei nötig wird, gerne bescheid sagen, dauert dann aber etwas da viele Datenschutz Anpassungen nötig wären.
Tabelle1 eine Tabelle aus Datensätzen: Name, Vorname, Adresse, etc Tabelle2 eine Tabelle mit gesperrter "Ausdruck" : Peter, Dieter, Hans
ich suche eine Funktion/Makro welches mir direkt den DATENSATZ löscht in dem gesperrte "Ausdruck" vorkommt. Zb. Könnte Hans bei Name Vorname Adresse oder sonst wo stehen. ich hoffe es ist alles klar.
nicht so ganz klar, denn in einer Tabelle werden Peter, Hans sicher öfters vorkommen. Da sollte man nicht "wild löschen"!!
Datensaetze löschen mache ich ungern, ich verschiebe sie lieber in eine Tabelle wo nur gelöschte Daten drin stehen. Dann kann man im Ernstfall sich die alten Daten noch mal ansehen, oder zurück kopieren.
Was für ein Makro fehlt sind alle Angaben wie die Tabellen heissen, und in welchen Spalten die Daten stehen. Das macht jeder anders. Gibt es evtl. eine eindeutige ID Nummer? Sonst muss man den ganzen Datensatz prüfen. Ist die Original Tabelle und die mit "gesperrtem Ausdruck" von den Spalten für Name, Adresse etc. identisch? Eine kleine Beispieldatei mit 10 Fantasie Datensaetzen ist hier sehr hilfreich
ich hoffe jetzt wird mehr klar. Es soll am besten jeder Datensatz verschoben (Hab schon ein tabellenblatt dafür erstellt) oder gelöscht werden, der ein Begriff von der NogoListe ODER nur ein Buchstaben als Namen oder Vornamen verwendet hat. Also müssten in dem Fall hier Datensatz 3,4 und 5 verschoben oder gelöscht werden. Die Worte aus der NogoListe können theoretisch überall auftauchen.
Sub Loeschen() Dim Loletzte As Long ' Varible Letzte Zeile Dim RaFound1 As Range ' Suchergebnis Dim Loi As Long ' Schleifenvariable ' Vornamen suche With Worksheets("nogo Liste") Loletzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _ .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count) For Loi = 1 To Loletzte Set RaFound1 = Worksheets("Datensätze").Columns(3).Find(.Cells(Loi, 1), , xlFormulas, _ xlWhole, , xlNext) If Not RaFound1 Is Nothing Then Worksheets("Datensätze").Rows(RaFound1.Row).Delete End If Next Loi End With ' Vorname oder Nachname nur 1 Zeichen With Worksheets("Datensätze") Loletzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _ .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count) For Loi = Loletzte To 2 Step -1 If Len(Cells(Loi, 3)) = 1 Or Len(Cells(Loi, 4)) = 1 Then Rows(Loi).Delete End If Next Loi End With End Sub
04.01.2019, 15:33 (Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2019, 15:33 von elamigo.)
Hey, die Lösung habe ich von Hajo. (https://www.ms-office-forum.net/forum/sh...p?t=356890) Allerdings vergleicht dieser Code nur Spalte 3 mit der nogoliste. Hast du eventuell eine Idee wie ich den Code verbessern kann, sodass er alle Spalten aus "Datensätze" abgleicht?
es geht auch mit: Set RaFound1 = Worksheets("Datensätze").Columns("B:D").Find ... Cells geht aber über alle Spalten!!
Das Makro von Hajo funktioniert, ist aber bei LastZell überdimensioniert. Ich glaube nicht das ihr 1.048.576 Daten habt! Kleiner Nachteil, sein Makro löschte immer nur die 1. gefundene Zeile, weil nicht per Do Loop geprüft wird ob ein Name mehrfach vorkommt. Den Teil habe ich erweitert, bitte mal in Ruhe mit Beispieldaten prüfen ob alle Daten erfasst werden.
Weiterhin werden alle Daten zur Sicherheit vor dem Löschen in die Tabelle "gelöschte Daten" kopiert. Würde mich freuen wenn es so optimal ist.
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • elamigo
ich sehe gerade im Betrag von Hajo wozu der 2. Teil im Makro gut ist, um Daten mit 1 Buchstaben zu löschen. Den Teil hatte ich zum testen bei mir gelöscht und vergessen ihn wieder einzufügen. Bitte selbst noch ins Makro einfügen.
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • elamigo