Clever-Excel-Forum

Normale Version: Datenabgleich mit Datensätzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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.
Hallo

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

mfg  Gast 123
Hey,

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.
Code:
Option Explicit

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

Lösung gefunden.
Hajo sei dank :15:
Hallo

Danke für die nette Rückmeldung, erspart uns unnötige Arbeit.  Erfreulich wenn ein Frager die Lösung selbst findet.

mfg  Gast 123
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?


FINALE LÖSUNG:

Set RaFound1 = Worksheets("Datensätze").Cells.Find(.Cells(Loi, 1), , xlFormulas, _
xlWhole, , xlNext)

im obigen Coder ersetzen.
Hallo

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
Nachtrag

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
Danke für diese ausführliche Arbeit.