VBA: Bestimmte Zellen mischen

motorcross3973

Grünschnabel
Hallo,
da ich noch ein Anfänger in VBA bin hätte ich folgende Frage:
Ich habe eine Art Sitzplan mithilfe einer Excel-Tabelle erstellt. Eine Zelle stellt dabei einen Sitzplatz dar. In jeder Zelle steht dann ein dazugehöriger Name. Einige Zellen dazwischen sind frei. Nun sollen alle Namen zufällig gemischt werden. Als feste Sitzplätze gelten die Zellen: A4, B4, B6, C4, C6, D4, D6, E4, E6, G4, G6, H4, H6, I4, I6, J4, J6 und K4. Wie kann man das am besten machen?

Würde mich über eine Antwort freuen!
P.S Im Anhang der dargestellte Sitzplan.
MfG Jonas Endrejat
 

Anhänge

Es sollen alle Namen gemischt werden aber es gibt feste Sitzplätze!? !? Irgendwie widerspricht sich das doch.
Warum gibt es bei den Spalten "A" und "K" nur die Zeile 4 und bei allen anderen sowohl die Zeile 4 als auch die Zeile 6?
Was passiert mit den Sitzplätzen die leer sind. Sollen die leer bleiben oder sollen die nach dem "Mischen" besetzt werden?

Ich glaube du musst ein bisschen genauer erklären wie das ablaufen soll.
 
Zuletzt bearbeitet:
Hallo tombe,
es gibt von der Position her feste Sitzplätze auf denen verschiedene Namen stehen können.
Alle Zellen/Sitzplätze die leer sind sollen auch leer bleiben. Ebenso soll die ganze Zellenformatierung übernommen werden. Wenn also beispielsweise "Lars" sich auf dem Platz A4 befindet und die Hintergrundfarbe Gelb ist, soll nach dem Mischen wenn sich "Lars" nun zufällig auf dem Platz G6 befindet, die Zelle die gleiche Hintergrundfarbe haben wie bei A4.
MfG motorcross3973
 
Ich würde der Einfachheit halber ein extra Tabellenblatt anlegen, oder im gleichen woanders eine Namensliste erstellen und die entsprechenden Zellen nach Wunsch formatieren.

In VBA alle Sitzplätze durchgehen (per Schleife die Zellen auf Inhalt abfragen) und per Zufall aus der extra erstellen Namensliste die Namen + die gewünschten Zellformatierungen übernehmen (wenn das Abfragen z.B. eine gefüllte Zelle ergibt).
Wenn die Liste Zeilenweise geschrieben ist, könnte man z.B. mit Cells(ErsteZeileDerListe-1 +Zufallswert, SpalteDerNamen) auf die Namen zugreifen.
"ErsteZeileDerListe-1" wenn der Zufallsgenerator keine 0 ausspuckt.

Was den Zufall angeht helfen vielleicht die Stichworte RND und RANDOMIZE, und man müsste noch sicherstellen, dass sich Zahlen nicht wiederholen.
 
Ich habe mal was gebastelt was wohl den gewünschten Zweck erfüllt.

Im Beispiel gibt es eine Tabelle mit 10 Spalten. Die enthaltenen Werte (Zeile 2) werden im Makro erfasst, neu sortiert und dann so weiter unten eingefügt.

ACHTUNG: Die Datei im Anhang ist eine Excel Datei mit Endung XLS, ich habe ihr nur zum Übertragen die Endung TXT verpasst. Vor dem Öffnen als wieder umbenennen!!
 

Anhänge

Neue Beiträge

Zurück