Clever-Excel-Forum

Normale Version: Automatische Zuweisung von Studienorten nach Bestenauslese/Punktzahlen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute,

ich habe das folgende Problem bzw. will folgende Verteilung über Excel lösen.

Problemschilderung:

Ich habe eine Liste mit ca. 2.500 Namen/Personen. Diese Personen haben sich auf 11 verschiedene Studienorte beworben. Hier kann jeder nicht nur einen Erstwunsch angeben, sondern, wenn gewünscht, eine Rangfolge von allen 11 Orten. Nun hat jede Person nach einigen Tests einen gewisse Punktzahl erreicht (die Personen erhalten Ihre Werte nach und nach bzw. die Liste wird ständig aktualisiert). Nun soll eine Art Bestenauslese stattfinden. Der mit dem besten Wert bekommt seinen Erstwunsch und dann geht es immer so weiter. Nun hat aber jeder Studienort eine maximale Kapazität von ca. 30 Plätzen. Das heißt, wenn die besten 31 Personen den gleichen Erstwunsch haben/hätten, würde die Nummer 31 nicht mehr den Erstwunsch bekommen, sondern den Zweitwunsch.

Meine Frage:

Wie bekomme ich es nun hin, dass die Personen automatisch nach ihren Werten auf die verschiedenen Studienorte verteilt werden und, wenn ein Wunschort voll ist, soll automatisch eine Zuteilung des Zweitwunsches (Drittwunsches, Viertwunsches etc.) erfolgen. Wichtig ist auch, dass, wie schon erwähnt, die Liste stets aktualisiert wird und die Reihenfolgen sich daher immer wieder ändern können.

Beispiel:

Max Mustermann hat den höchsten Wert mit 120 Punkten erreicht und sein Erstwunsch ist Nürnberg. Nürnberg hat 30 Plätze zu vergeben, nun wird Max Mustermann automatisch Nürnberg zugeordnet.

Lisa Leuchte hat einen Wert von 95 und ist damit an Platz 567. Nun hat sie auch Nürnberg als Erstwunsch angegeben. Nürnberg hat aber bereits alle Plätze vergeben. Ihr Zweitwunsch ist München und dort gibt es noch freie Plätze, also wird sie München zugeordnet.

Thorsten Träne ist der an Platz 2000 mit einem Wert von 65. Nun sind alle, sagen wir in diesem Fall einfach mal 5 Wunschorte, die er ausgewählt hat, voll. Das heißt, er scheidet aus dem Verfahren aus bzw. kann nicht studieren, weil sein Wert zu schlecht ist bzw. er nicht ausreichend viele Wunschorte angegeben hat. Hätte er 11 Wunschorte gewählt, hätte dies anders aussehen können bzw. wäre er ggf. noch auf Wunschort 10 oder 11 verteilt worden.


Ich habe in den letzten Jahren relativ viel mit Excel gearbeitet, für diese Problemstellung kommt mir aber absolut keine Löstung in den Sinn... Ich hoffe, ihr könnt mir ggf. helfen.

LG
Hallo,

ich hätte bitte noch ein paar Nachfragen:

Sollte die Kapazität nicht bekannt sein? Mit ca. 30 kann man nicht rechnen...

Wenn es insgesamt 330 Plätze gibt, wie kann dann Platz 567 auch noch einen Platz bekommen?

Mal angenommen, Gerald Gewinnsucht mit 100 Punkten hat Platz 330 ergattert. Nun hat Rita Wichtig 101 Punkte erreicht. Wird nun Gerald rausgeworfen?
Hi

Nächste Frage.
Wäre denn eine VBA Lösung für dich ok, denn darauf wird es wohl hinauslaufen.  

Gruß Elex
rate mit schrieb:Hallo,

ich hätte bitte noch ein paar Nachfragen:

Sollte die Kapazität nicht bekannt sein? Mit ca. 30 kann man nicht rechnen...

Wenn es insgesamt 330 Plätze gibt, wie kann dann Platz 567 auch noch einen Platz bekommen?

Mal angenommen, Gerald Gewinnsucht mit 100 Punkten hat Platz 330 ergattert. Nun hat Rita Wichtig 101 Punkte erreicht. Wird nun Gerald rausgeworfen?
Minimum sind 23 Plätze und Maximum 31. Sollten die 23 unterschritten werden, kommt der Kurs dort nicht zustanden, wovon nicht auszugehen ist. Wir können also mit 31 rechnen. Es könnte aber ggf. ansonsten jede Zahl von 23 bis 31 sein. Für unseren Fall ist aber wohl nur die 31 relevant.

Man kann ggf. auch auf Platz 567 noch einen Platz bekommen, da viele Personen maximal einen Drittwunsch angeben und wenn diese dann rausfallen, weil ihr Punktwert zu schlecht ist, rutscht halt der nächste nach. Ob das jetzt wirklich bis Platz 567 oder nur Platz 375 geht, kann ich leider noch nicht sagen. Hätte ich aber besser herausstellen können, da hast du Recht!

Das ist richtig. Wenn Rita Wichtig plötzlich besser ist als Gerald Gewinnsucht auf Platz 330, dann würde dieser rausfliegen. Daher auch der Verweis darauf, dass die Liste ständig aktualisiert wird und man quasi ein "Live-Ranking" benötigt.

Elex schrieb:Hi
Nächste Frage.
Wäre denn eine VBA Lösung für dich ok, denn darauf wird es wohl hinauslaufen. 
Gruß Elex
Ja, wäre vollkommen okay für mich. Bin da offen. Wäre toll, wenn es irgendwie automatisiert werden könnte, denn jedes Mal die Listen per Hand zu aktualisieren ist, gerade bei den 2., 3.-Wünschen etc. schon wirklich mühsam. Es könnte ja durchaus auch passieren, dass jemand plötzlich sienen Erstwunsch nicht mehr bekommt, dann in seinen Zweitwunsch rutscht und dort dann jemanden rauskegelt, der diesen Standort aber als Erstwunsch ausgewählt hatte usw. Viele Dinge, an die man denken muss... Leider ziemlich komplex. Bisher hat noch alles geklappt, aber hier stoße ich aufgrund der Komplexität leider an meine Grenzen, was Excel angeht.
Hallo,

wenn die Daten wie in der Beispieldatei strukturiert sind, sollte dieser VBA-Code reichen:

Code:
Sub Zuordnung()
Dim WSF As WorksheetFunction: Set WSF = Application.WorksheetFunction

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    For j = 2 To 12
        If WSF.CountIf(Range(Cells(2, "M"), Cells(i, "M")), Cells(i, j)) < 31 Then Cells(i, "M") = Cells(i, j): Exit For
    Next j
Next i
End Sub

mfg

PS: ohne Kenntnis des letzten Posts
Hi

Mein Vorschlag.
Fennek schrieb:Hallo,

wenn die Daten wie in der Beispieldatei strukturiert sind, sollte dieser VBA-Code reichen:

Code:
Sub Zuordnung()
Dim WSF As WorksheetFunction: Set WSF = Application.WorksheetFunction

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    For j = 2 To 12
        If WSF.CountIf(Range(Cells(2, "M"), Cells(i, "M")), Cells(i, j)) < 31 Then Cells(i, "M") = Cells(i, j): Exit For
    Next j
Next i
End Sub

mfg

PS: ohne Kenntnis des letzten Posts

Danke dafür. Gucke ich mir einmal an!


Elex schrieb:Hi

Mein Vorschlag.

Schaue ich mir auch mal an und gebe dann eine Rückmeldung, ob es geklappt hat!