Ich bin wirklich blutiger Anfänger was VBA Codes selber schreiben betrifft. Bisher konnte ich mich mit nachvollziehen und anpassen von Codes aus dem Netz über Wasser halten. Doch bei meiner jetzigen Aufgabe hilft mir das nicht mehr weiter.
Ich habe folgendes vor:
In einer Excel-Datei habe ich zwei Tabellen Blätter "Puffer" und "Alarmfilter".
In Puffer stehen in Spalte "G" aberhunderte Einträge untereinander. Die meisten kommen öfter vor.
In Alarmfilter stehen in Spalte "A" die Alarme/Einträge die mich interessieren.
Ich versuche eine Makro zuschreiben, das jede Zelle in "Puffer" Spalte "G" mit allen Einträgen in "Alarmfilter" Spalte "A" vergleicht. Wenn der Eintrag in "Puffer" "G" nirgends in "Alarmfilter" "A" vorkommt soll die Entsprechende Zeile In "Puffer" gelöscht werden.
Taucht der "Puffer" Eintrag aber in der Alarmliste auf, soll er stehen bleiben.
Ziel ist also das am ende in "Puffer" nur noch Zeilen Stehen die in Spalte "G" Einträge/Alarme haben die für mich interessant und in "Alarmfilter" gelistet sind.
Nach dem ich im Netz nicht fündig geworden bin habe ich mich selbst (bisher vergeblich) am schreiben versucht. Komme aber nicht weiter. Wenn mir jemand helfen könnte meine Denkfehler zu beseitigen/Verstehen oder einen neuen Ansatz hätte wäre ich froh.
Mein letzter Versuch ist folgender:
Dim PuZeile As Long
Dim PuZeileMax As Long
Dim AlZeile As Long
Dim ALZeileMax As Long
Dim ZaehlPu As Long
Dim ZaehlAl As Long
With Worksheets("Puffer")
PuZeileMax = .UsedRange.Rows.Count
For PuZeile = PuZeileMax To 2 Step -1
With Worksheets("Alarmfilter")
AlZeile = .UsedRange.Rows.Count
For AlZeile = ALZeileMax To 2 Step -1
ZaelPu = Worksheets("Puffer").UsedRange.Rows.Count
ZaelAL = Worksheets("Alarmfilter").UsedRange.Rows.Count
If Worksheets("Alarmfilter").Cells(ZaelAL, 7) = Worksheets("Puffer").Range("G", PuZeile) Then
ZaelAL = ZaelAL - 1
Else: Worksheets("Puffer").Rows(PuZeile).Delete
End If
Next
End With
Next
End With