VBA Makro für Excel, dass so fair wie möglich Fächer an Schüler:innen verteilt.
VBA Macro for Excel, that tries to distribute chosen subjects as fair as possible among students/pupils.
Ausgehend von einer Liste mit Schüler:innen und deren Fach-Wünschen und einer Liste mit möglichen Fächern und deren maximaler Kursgröße, wird eine möglichst Optimale Zuteilung von Kursen zu Schüler:innen erzeugt. Das Makro soll z.B. Stufenkoordinator:innen helfen bei der Verteilung von Wahlpflicht-Fächern/Wahlpflichtunterricht an der Schule, bei der Zuordnung zu Projektwochen, AGs und Kursen. Generell kann hiermit jede Zuteilung aus einer Mehrfachwahl erzeugt werden. Die Anzahl der Fächer, Beteiligten und Wahlmöglichkeiten ist dabei beliebig. Das Makro arbeitet einfach auf den verfügbaren Informationen.
Urpsrünglich wurde dieses Programm für einen Freund und ganz tollen Lehrer geschrieben, damit er mehr Zeit hat unser Rugby-Team zu trainieren. Wenn das Makro gefällt, freue ich mich sehr über einen Stern.
Aus den beidenen gegebenen Tabellenblättern wird (in einem neuen Tabellenblatt) eine Zuteilung wie folgt errechnet, um möglichst vielen einen möglichst hohen Wunsch zu ermöglichen:
- Alle Erstwünsche werden von oben nach unten vergeben, bis alle Kursplätze voll sind
- Alle Zweitwünsche werden von oben nach unten vergeben, bis alle Plätze voll sind
- Wenn jemand noch keinen Platz hat wird versucht zu tauschen, mit jemand der den Erstwunsch bekommen hat. (Bzw.. dann für den Zweit-, Dritt- und Viertwunsch).
- Sonst wird der höchstmögliche noch freie Wunsch zugeteilt.
- Die Verteilung geht nicht unbedingt auf. Schüler:innen deren Wünsche nicht erfüllt werden konnten werden lila markiert, zur manuellen Nachbearbeitung.
In Testläufen konnten aber 390 aus 400 Schüler:innen zugeteilt werden. Die Laufzeit betrug wenige Sekunden.
Es kann ausgewählt werden (durch einen Dialog beim Start des Makros), ob die Liste der Schüler:innen nach Priorität sortiert ist, um die Schüler:innen weiter oben in der Liste bei der Wahl zu bevorteilen. Das kann z.B. der chronologischen Reihenfolge entsprechen, in der Schüler:innen die Rückmeldungen einreichen und somit als Anreiz gegenüber den Schüler:innen genutzt werden, die Wünsche zeitnah einzureichen.
Andernfalls (bei Klick auf 'Nein') werden die Fächer so fair wie möglich verteilt: zu Beginn wird die Liste der Schüler:innen zufällig angeordnet, die Fächer nach dieser Reihenfolge zugeteilt und dann wieder nach Klasse und Nachname sortiert.
In einer Excelarbeitsmappe gibt es zwei Tabellenblätter: "Wahlmöglichkeiten" listet die Namen der möglichen Fächer auf und die Kursgröße je Fach. "Wahlen" listet alle Schüler:innen auf mit Namen, Klasse und jeweils deren Erst- bis Fünftwunsch der möglichen Fächer.
Die Zuteilung wird in einem neuen vollständig generierten Tabellenblatt erzeugt, sodass die ursprünglichen Listen unverändert bleiben. Man kann mehrere Zuteilungen nacheinander in der selben Mappe generieren lassen und die generierten Tabellenblätter können nach Belieben gelöscht werden. Konflikte in der Tabellen-Benennung werden vom Makro umgangen.
Formatierung der Wahlmöglichkeiten
Formatierung des Zuleitungsergebnisses (analog der Wahlen). (Die Daten sind natürlich randomisiert)