ich erstelle gerade ein Tool, welches Daten von einem anderes System als Export verarbeitet und in einer "Master Product" Tabelle speichert.
Ablauf ist folgender:
- User kopiert in Tabellenblatt "Import Product GMBH" exportierte Daten (werde ich ggf. durch Auswahl des Exports in Zukunft nutzerfreundlicher machen, aber hier sehe ich kein Problem)
- User führt makro aus:
---Von Reihe 2 bis Ende durchgehen im Import Sheet. Jeweils Abgleich ob gleiches Produkt schon vorhanden (Spalte B "Import Product Gmbh" und Spalte A "Master Product")
---Wenn schon vorhanden (sprich gleiche Artikelnummer), dann Einträge aktualisieren sofern notwendig (Spalte B bis K in Spalte A bis J, in gleicher Reihenfolge)
---Wenn nicht vorhanden (sprich Artikelnr nicht gefunden) UND wenn Spalte I ist ein "Y" dann Eintrag am Ende der Master Product Liste erstellen (wieder Spalte B bis K in Spalte A bis J, in gleicher Reihenfolge)
Das wäre die Basis die ich gerne aufbauen möchte. Mit einem eigenen Makro habe ich das bereits geschafft und es funktioniert (code anbei in Modul 1). Zugegeben es könnte schöner sein, aber grundsätzlich geht es.
Jetzt stehe ich vor der Herausforderung, dass die Datenmenge zu groß ist (>4.000 Zeilen im Import (Tendenz steigend) und ~3.500 Zeilen in Master Product) und die Ausführung des Makros dauert zu lange. (gut wäre 10 min). In anderen Tabellenblättern (nicht im der Beispieldatei drin) gibt es einen Abgleich anderer Art über Arrays mit einer wesentlich besseren Performance. Leider klappt reverse engineering dazu nicht.
Kann mir jemand helfen das über Arrays anstatt Range zu lösen? Vielleicht kann mir dazu ja jemand helfen? Ansonsten starte ich mit dem ursprünglichen Makro nochmal neu (ist leider ein Projekt was schon ein paar mal umgebaut wurde)
https://www.herber.de/bbs/user/157428.xlsm
Gruß