Hallo Thorsten,
Helfen? JA!, Fertiglösung anbieten? Nein! Zumindest jetzt noch nicht. Auch wenn dies eine jener Aufgaben ist, wo es mich in den Fingern juckt. Da würde ich mich am liebsten gleich mal ran setzen. Aber zeitlich wird das wohl erst nächste Woche was und du willst ja auch was lernen.
Hier schon mal meine Idee: Zunächst solltest du deine Zelleneingaben auslesen und am besten in Variablen schreiben. Damit kannst du dann schneller arbeiten. Dann machst du eine For-To-Next-Schleife mit der angegebenen Anzahl an Durchläufen (in deinem Beispiel 20). In dieser Schleife berechnest du mit der Rnd-Funktion eine zufällige Uhrzeit. Diese prüfst du in einer Do-While-Loop-Schleife, ob sie sich im verbotenen Zeitraum befindet. Wenn ja, dann berechnest du in dieser zweiten Schleife eine neue Uhrzeit, wenn nein, wird der Schritt automatisch übersprungen.
Am schwierigsten dürfte das mit dem 10-Minuten-Abstand werden. Da es sich ja um zufällige Uhrzeiten handelt, kann die aktuelle sowohl nach als auch weit vor der zuletzt berechneten liegen. So ist die Abstandsprüfung also nicht möglich. Stattdessen könnte die Do-While-Loop-Anweisung per OR-Verknüpfung eine zweite Bedingung erhalten. Darin suchst du am besten über die Worksheet-Funktion VLookup (ohne vierten Parameter!) oder über eine Kombination aus Rank- und der Large- bzw. Small-Funktion, nach dem in der Liste bereits vorhandenen nächstkleineren bzw. nächstgrößeren Wert im Vergleich zur aktuellen Uhrzeit. Ist der Abstand von diesem weniger als 10 min. dann geht es in die Schleife zur Neuberechnung, ist er größer, wird die Schleife übersprungen.
Klingt etwas kompliziert. Aber wenn du dich in die genannten Funktionen eingelesen hast, sollte es machbar sein. Probier dich da mal etwas aus, wenn du nicht weiterkommst, kannst du ja deinen bisherigen Code mal zeigen. Dann sehen wir weiter.
Gruß Mr. K.
|