Spaltenvergleich -> Zellen löschen

Bild

Betrifft: Spaltenvergleich -> Zellen löschen
von: Adrian
Geschrieben am: 09.09.2015 13:15:52

Hallo liebe Community!
Ich brauche mal wieder eure Hilfe, und zwar möchte ich Zwei Spalten zweier unterscheidlicher Tabellen miteinander vergleichen und aus einer Spalte all jene Einträge entfernen, die NICHT auch in der anderen Spalte vorhanden sind...
Der Code, den ich hierfür eigentlich für sinnvoll halte, funktioniert aber irgendwie noch nicht so recht...


LZ2 = IIf(IsEmpty(sh2.Cells(sh2.Rows.Count, 1)), sh2.Cells(sh2.Rows.Count, 1).End(xlUp).Row,  _
sh2.Rows.Count) 
set sh1 = Activeworkbook.Sheet(1) 'Vergleichsliste
set sh1 = Activeworkbook.Sheet(2) 'aus dieser Liste sollen Einträge verschwinden
Dim ZeileD As Long
    For ZeileD = LZ2 To 2 Step -1
    If WorksheetFunction.CountIf(sh1.Columns(2), sh2.Cells(ZeileD, 5)) = 0 Then sh2.Cells( _
ZeileD, 5).EntireRow.Delete    
    Next ZeileD
Bitte um schnelle Hilfe und vielen Dank vorab... :)

Bild

Betrifft: AW: Spaltenvergleich -> Zellen löschen
von: Gerd L
Geschrieben am: 09.09.2015 14:07:13
Hallo Adrian,
vielleicht sollte man die letzte Zelle in Spalte 5 ermitteln u. sh2 mit einer Set-Anweisung ein Blatt zuweisen, u. die beiden Set-Anweisungen zuvor (darüber im Code) machen.
Gruß Gerd

Bild

Betrifft: AW: Spaltenvergleich -> Zellen löschen
von: Adrian
Geschrieben am: 09.09.2015 14:20:31
Hallo Gerd,
sorry das war ein FLüchtigkeitsfehler meinerseits, habe alles schnell aus dem code zusammenkopiert damit jeder sehen kann, wie die variablen definiert sind. sh2 ist im original code natürlich vor LZ2 definiert und LZ2 zählt auch die letzte Zeile (von spalte 5) richtig aus. Das ist leider nicht des rätsels lösung...
Trotzdem vielen Dank!

Bild

Betrifft: AW: Spaltenvergleich -> Zellen löschen
von: Gerd L
Geschrieben am: 09.09.2015 14:29:37
Hallo Adrian,
wenn soweit alles o.K. ist, könntest du noch erläutern, was "funktioniert nicht so richtig!" denn bedeutet u. eine Beispiel-Datei hochladen.
Gruß Gerd

Bild

Betrifft: AW: Spaltenvergleich -> Zellen löschen
von: Adrian
Geschrieben am: 09.09.2015 15:02:33
Hallo Gerd,
zunächst die Datei: https://www.herber.de/bbs/user/100098.xlsx
Mein Code soll eigentlich Zeile2 in Tabelle1 und Zeile2 in Tabelle2 miteinander vergleichen und alle Werte (die komplette zeile) aus Tabelle2 löschen, die eben nicht in Tabelle1 vorkommen. Im Beispiel sind all diese Einträge mal von mir Gelb markiert worden...
Die Idee hinter dem Code: zählen, wie oft die nummer einer Zelle in der Spalte "Zeile2" der Tabelle 1 vorkommt, wenn "0" gezählt wird, die gesamte zeile löschen... Hoffentlich konnte ich mich halbwegs verständlich machen ^^

Bild

Betrifft: AW: Spaltenvergleich -> Zellen löschen
von: Gerd L
Geschrieben am: 09.09.2015 15:21:52
Hallo Adrian,
ich sehe mit deiner Beispieldatei kein Problem.

Sub test()
Dim X As Long
For X = Tabelle2.Cells(Tabelle2.Rows.Count, 7).End(xlUp).Row To 3 Step -1
   If WorksheetFunction.CountIf(Tabelle1.Columns(3), Tabelle2.Cells(X, 7).Value) Then
   'mach nichts
   Else
       Tabelle2.Cells(X, 7).EntireRow.Delete shift:=xlShiftDown
   End If
Next
End Sub
Gruß Gerd

Bild

Betrifft: AW: Spaltenvergleich -> Zellen löschen
von: Adrian
Geschrieben am: 10.09.2015 08:21:35
Ja es funktioniert endlich!! Super vielen Dank für deine Hilfe :) Muss wohl doch an irgendwelchen Bezügen gelegen haben, die ich nicht richtig definiert habe (habe jetzt zb. sh2 durch Sheets(2) ersetzt).
Oder macht es einen Unterschied, ob ich die IF-Funktion nach


"= 0"
suchen lasse um "THEN" den Delete-Befehl auszuführen bzw. nach

">0"
suchen lasse um "Else" zu löschen...?
Lieben Gruß!

Bild

Betrifft: AW: Spaltenvergleich -> Zellen löschen
von: Gerd L
Geschrieben am: 10.09.2015 08:31:37
Hallo Adrian,
nein, das macht m.E. keinen Unterschied.
Gruß Gerd

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Spaltenvergleich -> Zellen löschen"