VBA - Einträge aus 2 Sheets vergleichen und matchen

jfrey

Grünschnabel
Hallo ich bin neu hier und hoffe das mir jemand helfen kann! Bitte habt etwas Nachsicht da ich sehr wenig Erfahrung mit VBA habe.

Ich habe ein Problem beim Matchen von verschiedenen Zeilen in 2 Tabellen (Sheets). Es handelt sich um die Sheets Vehicles und Packages. Diese Reiter werden jeweils automatisch ausgefüllt und haben nicht die gleiche Anzahl an Einträgen. Jedoch hat der Reiter Packages immer mehr Einträge als der Reiter Vehicles. Im Endeffekt sollen den Vehicles die passenden Packages zugeordnet werden. Jedes Vehicle kann genau ein Package mitnehmen. Das bedeutet, dass am Ende sicher Pakete oder Vehicles ohne Match bestehen bleiben.
Abgleich:
Um einen „Treffer“ zu haben müssen folgende Voraussetungen für die zu vergleichenden Zeilen erfüllt sein.
- Der Pricecheck in Tabelle „Vehicles“ muss den Wert 1 haben
- Der „route code“ muss in den zu vergleichenden Zeilen in beiden Tabellen übereinstimmen.
- Darüber hinaus muss der „drivers price“ aus der Tabelle Vehicle unter dem „Actual PCC“ aus der Tabelle Packages liegen.
- Wenn diese Voraussetzungen erfüllt sind kommt es zu einem Match. Falls es zu einem Match kommt, sollte in beiden Tabellen in der Spalte Match für die entsprechnden Zeilen eine 1 eingetragen werden.

Gedachter Vorgang beginnend bei Eintrag 1 in Tabelle Vehicle:
1. Im ersten Schritt muss überprüft werden ob der pricecheck im Reiter „Vehicles“ erfolgreich war. Wenn dort eine 0 eingetragen ist kann sofort mit dem zweiten Eintrag im Reiter „Vehicles“ fortgefahren werden da dieser Eintrag nichmehr für einen Abgleich in Frage kommt
2. Im zweiten Schritt muss überprüft werden ob in der Spalte „Match“ in Tabelle „Vehicles“ eine 1 eingetragen ist. Falls dies der Fall ist kann ebenfalls mit dem nächsten Eintrag fortgefahren werden.
3. Falls eine 0 in der Zeile Match ist kann der Route code mit dem Route code des ersten Eintrags in der Tabelle „Packages“ verglichen werden. Falls der Route Code nicht gleich wird der Vehicle Eintrag mit dem nächsten Eintrag in der Tabelle packages verglichen.
4. Falls der Route Code gleich ist wird überprüft ob im Eintrag in der Tabelle „Packages“ in der Spalte Match eine 1 steht. Falls eine 1 eingetragen ist wird wieder zum nächsten Eintrag in der Tabelle „Packages“ gesprungen und der Route abgleich beginnt erneut.
5. Falls eine 0 eingetragen ist werden die Preise der zwei Einträge verglichen. Hierbei muss der „drivers price“ in Tabelle „Vehicles“ unter dem „Actual PCC“ in Tabelle Packages liegen. Wenn dies nicht der Fall ist wird die nächste Zeile von packages zum Vergleich herangezogen und es geht wieder ab 2. Los.
6. Falls der „drivers price“ jedoch niedriger als der „Actual PCC“ ist kommt es zu einem Match. In diesem Fall wird für die beiden passenden Einträge eine 1 in deren „Match“ Spalte eingetragen.
7. Falls ein Vehicle keinen Match hat bleib die 0 in der Match Zeile bestehen. Selbes gilt für die Packages.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und bin über jede Hilfe dankbar. Wie Anfangs erwähnt werden die Daten in den zwei Reitern „Vehicles“ und „Packages“ über Makros befüllt. Falls jemand ein alternatives Vorgehen einfällt, bei dem trotzdem alle Voraussetzungen erfüllt werden wäre ich auch über weitere Vorschläge sehr froh.

Vielen Dank für alle hilfreichen Tipps und liebe Grüße,
Jonas
 

Anhänge

  • VehiclePackages.zip
    9 KB · Aufrufe: 0

Zvoni

Erfahrenes Mitglied
Der Algorithmus ist sauber. Woran haperts denn jetzt?
Zwei innereinander verschachtelte For/Next bzw. Do/Loop und da drin eben o.g. Algorithmus als If-Then-else rein
 

Neue Beiträge