nach einigen Versuchen und nunmehr scheitern, suche ich hier Hilfe.
Ich habe ein Makro, welches dynamisch (=variable Blattnamen je nach Tag und Vergleichstag, an dem ich es nutze) in einem Blatt Zeile für Zeile einen Wert nimmt und im anderen Blatt sucht. Findet er das dort, dann kopiert er ausgewählte Informationen in das Ursprungsblatt.
Ich gehe auf dem Ausgangsblatt mit einer For-Next-Schleife durch die Zeilen (konkret Spalte A). Ende ist dynamisch je nach Zeilenanzahl.
Innerhalb der Schleife bin ich in der ersten Version mit einer Do-Until-Schleife auf das Suchblatt gegangen. Je größer die Datenmenge dort umso länger dauerte das.
Aber es hat funktioniert.
In der zweiten Version wollte ich das durch "Find" ersetzen und habe mir als Treffer die "row" geben lassen und damit weitergearbeitet. Das funktionierte bisher leider nur scheinbar, wie ein Volltest nun gezeigt hat.
Denn "find" liefert mir trotz "LookAt:=xlWhole" in 94 von 1.440 Fällen sehr ähnliche Werte, obwohl im Suchblatt keine Treffer hätten sein dürfen.
Konkret suche ich nach eindeutigen Projektnummern. Diese sehen in etwa so aus 12.1, 123.2, 123.3, 1234.1, 1235.1. Ähnlich war dann z-B. 1236.1 obwohl es das nicht im Suchblatt gibt.
Warum kann ich mir nicht erklären, denn eigentlich sollte das nichts anderes machen als im Excel Strg+F. Auch war die Fehlerbehandlung unvorteilhaft, denn Nichttreffer (Nothing) umging ich mit "on Error resume next"
Also habe ich Versuch 3 gestartet. Es soll via Worksheetfunction ein Vlookup in ausgewählte Zellen eingetragen und über alle Zellen nach unten kopiert werden. Dann darf Excel kurz rechnen und am Ende werden via copy-value-Paste die Spalten wieder "entformelt", damit die Arbeitsmappe handhabbar bleibt. Leider scheitere ich am Vlookup über dynamische Blätter.
Der Blattname ist letztlich der Dateiname der dem Erstelldatum der Datei entspricht.
Wenn ich das Makro starte, wird in der aktiven Datei das Arbeitsblatt automatisch benamt (ActiveSheet.Name = Date). Anschließend wird die Datei meiner Wahl (=Inputbox mit Dateinamen) geöffnet für die vorgenannten Schritte.
Toll wäre, wenn mir jemand helfen könnte mit entweder: Lösung für das "Find-Problem" oder Syntax für Vlookup oder einer noch besseren Idee (Aktuell haben die Dateien jeweils rund 1.500 Zeilen, die alle durchlaufen werden, d.h. Suche die 1.500 Projektnummern in der vorherigen Datei mit ca. 1.500 Zeilen und kopiere, was du findest). Tendenz steigend, ich kann alte Dateien (und Projektnummern) aus Dokumentationsgründen nicht entfernen, muss also die steigende Zahl von Zeilen mitführen.
Formel komplett wäre ungefähr: =IF(ISERROR(VLOOKUP([Ausgangsblatt.Spalte_A, Ausgangszeile], Suchblatt.A-Y,23,false),"""",if(VLOOKUP([Ausgangsblatt.Spalte_A, Ausgangszeile], Suchblatt.A-Y,23,false)=0,"""",VLOOKUP([Ausgangsblatt.Spalte_A, Ausgangszeile], Suchblatt.A-Y,23,false))
Der eigentliche SVERWEIS ist immer gleich: VLOOKUP([Ausgangsblatt.Spalte_A, Ausgangszeile], Suchblatt.A-Y,23,false).
Ich kriege es nicht hin, dass die Blätter dynamisch sind. Bereich über set und Range zuweisen klappt nicht. Die Fehlermeldung outet mich als Fehler - 1004 :-)
Vielen Dank
Viele Grüße
Stefan