es scheint das deine Zahlen eher Text sind. Wenn du das sicher geklärt hast, sind Suchvorgänge leicht zu lösen.
ich rate dir zur Range.Find() Funktion. In der Hilfe gibt es dazu ein Beispiel wie man mehrere Suchergebnisse findet in Kombination mit Find und Findnext.
Range.find() kann auf Bereiche angewendet werden und geht dort der Reihe nach durch. Das Ergebnis ist die Zelle, die den Suchwert enthält. Hier wäre noch zu prüfen wenn die Zielzelle in Spalte 2 schon belegt ist, den neuen Wert nicht einzufügen. Siehe deine Beispielzeile 3
Range("lngZeile:lngZeile").Value
Eine Range("Zelladresse") benötigt einen Text, aus dem einer Zelladresse abgeleitet werden kann. Also "A1" oder als Bereich "A1:D1" oder "3:3" als ganze Zeile.Range("lngZeile:lngZeile").Value Eher so Range(lngZeile & ":" & lngZeile"). denn Variablen stehen nicht in Anführungsstrichen. Hier würde das die ganze Zeile betreffen und der Wert 1820 steht nicht in der ganzen Zeile. Somit geht der Vergleich nie auf true. Eine weitere Forschleife über die Zellen der Zeile ist norwendig.
Deine Bezeichnung für cells.offset(x,y) ist falsch. Cells bezeichnet Alle Zellen und das offset verschiebt um zwei Werte (Zeile und/oder Spalte).
Offset benötigt einen Ausgangs - PUNKT also hier cells(lngZeile ,3 ) Cells ist besser geeignet als Range, da hier Zeile und Spalte als Zahlen benutzt werden. Bei Zählschleifen sind eh schon Zahlen im Spiel somit ist Cells die bessere Wahl.
z.b. Cells(lngZeile, 2).value = Cells(lngZeile, aktuelleSpaltennummer).Offset(0,1).value
bei range.find() ist das Ergebnis ein Zellbezug und kann direkt mit offset ergänzt werden,
|