ich bastle mir gerade ein Makro zusammen.
In diesem werden, in zwei verschiedenen Arbeitsblättern, zwei Spalten miteinander verglichen.
Im Zielblatt werden die gefundenen Treffer mit Ja markiert.
Das Ganze funktioniert so weit fast perfekt.
Jetzt habe ich allerdings versucht eine For-Schleife zu verschachteln, die vorab prüft, ob die Spaltenprüfung überhaupt notwendig ist, denn wenn in Zelle Q++ bereits etwas steht, kann das Makro direkt mit der nächsten leeren Zelle in Q weitermachen und ist somit schneller im Durchlauf.
Jetzt haben sich zwei Fragen ergeben, die wenig miteinander zu tun haben:
1. Was ist an meiner Verschachtelung falsch, ich sehe keinen offensichtlichen Fehler, aber es muss ja falsch sein.
2. Wie bekomme ich es hin, dass auch doppelte Werte mit "JA" markiert werden? Leider berücksichtigt die Prüfung, wie der SVerweis, nur den ersten Wert.
Über Tipps bin ich dankbar.
Hier der Code:
Sub test3()
Sheets("Tabelle2").Select
Const NameTabelle1 = "Tabelle1" 'Destination
Const NameTabelle2 = "Tabelle2" 'Source
Dim wsSource As Worksheet, wsDestination As Worksheet
Dim lngIndexS As Long, lngIndexD As Long
Dim lngZeileS As Long, lngZeileD As Long, lngZeile As Long
Dim rng As Range
Set wsSource = Worksheets(NameTabelle2)
Set wsDestination = Worksheets(NameTabelle1)
lngIndexS = Range("H2").Column
lngIndexD = Range("H2").Column
For lngZeile = 2 To Range("Q1000000").End(xlUp).Row 'Schleife 1 soll prüfen, ob Zelle in Q leer, wenn nicht vergleichen und kopieren, sonst nächste Zelle prüfen
For lngZeileS = 2 To wsSource.Cells(Rows.Count, lngIndexS).End(xlUp).Row
Set rng = wsDestination.Columns(lngIndexD).Find(What:=wsSource.Cells(lngZeileS, lngIndexS).Value, LookAt:=xlWhole)
If rng Is Nothing Then
lngZeileD = wsDestination.Cells(Rows.Count, lngIndexD).End(xlUp).Row + 1
Else
If IsEmpty(Cells(lngZeile, 17)) Then
lngZeileD = rng.Row
Cells(lngZeileD, 17) = "Ja"
End If
End If
Next lngZeileS
Next lngZeile
End Sub
Liebe GrüßeLisa