Punkteberechnung für einen Sportverein
23.04.2014 14:00:57
Jürgen
als Neuling in diesem Forum bitte ich um Entschuldigung, falls ich gleich eine Frage stelle, die an anderer Stelle bereits beantwortet wurde. Dann habe ich nicht lange genug gesucht und wäre dann natürlich sehr zufrieden, wenn mir jemand mitteilt, wo ich die Antwort auf die Frage finde.
Die Datei liegt (datenreduziert) hier: https://www.herber.de/bbs/user/90315.xls
Ich hoffe, dass ich nichts für die weitere Beschreibung ggf. Notwendige gelöscht habe, da die Datei sich leider vorher auf Grund der Größe nicht hochladen ließ!
Problemstellung:
Alle (in Abhängigkeit von verschiedenen Faktoren) zu berücksichtigenden Läufe aller Mitglieder unseres Sportvereins, die erfasst wurden, werden bepunktet und anschließend eine Rangliste der Läufer nach absteigender Punktzahl erstellt, deren Bekanntgabe auf der jährlichen Weihnachtsfeier ein viel beachteter Programmpunkt ist.
Die Punkte für verschiedene Laufstrecken sind auf einem Tabellenblatt aufgelistet. (Auf diesem Tabellenblatt stehen manche Strecken ohne Punkte, weil diese Strecken momentan nicht in die Rangliste einfließen.)
Einer gelaufenen Zeit wird der nächstbessere Punktwert zugeordnet, falls exakt die gelaufene Zeit nicht in der Liste auftaucht.
Zudem ist die Bepunktung der Zeit geschlechtsabhängig, so dass bei Frauen die gelaufene Zeit durch 1,1 geteilt wird und dann dazu der jeweilige Punktwert gesucht wird.
Der Punktwert ist zudem altersabhängig. Der entsprechende Faktor steht auf dem Tabellenblatt Altersfaktor. Geschlecht und Alter werden natürlich ggf. auch beide gemeinsam berücksichtigt!
Manche Läufer laufen eine Strecke im Laufe eines Kalenderjahres mehrfach, manche laufen 7 verschiedene Strecken, manche nur eine Strecke, die dann aber 5x. Zu berücksichtigen für die Punktevergabe ist jeweils nur die beste Zeit jeder Strecke.
Falls ich mich mit VBA besser auskennen würde ich voraussichtlich folgende Anweisung schreiben:
Gehe in die Tabelle "Läufe Spiridon".
Gehe in die 2. Zeile.
Merke dir die Zahl aus Spalte A.
Prüfe, ob die Strecke aus Spalte B auf "Spiridon-Tabellen" als Spaltenkopf auftaucht.
Falls ja mache weiter. Falls nein: Zeige mir den Datensatz zur Korrektur / Prüfung an.
Nehme die Zeitangabe aus Spalte C und trage den Zeitwert auf "Punkte" in der Zelle ein, in der in Spalte A die Zahl steht, die zu Beginn des Ablaufs gemerkt wurde und in der der Spaltenkopf identisch ist mit der Angabe aus Spalte B.
Nun teile die Zeit durch 1,1, falls zu der Zahl aus Spalte A auf "Mitglieder Spiridon" in Spalte C ein w steht oder lasse die Zeit unverändert, falls dort kein w steht und suche zu dieser Zeit den zugeordneten Punktwert aus "Spiridon-Tabellen". Falls nicht der exakte Zeitwert auftaucht nehme den Punktwert der nächstbesseren Zeit. Falls die Zeit gar nicht auftaucht nehme als Punktwert 0.
Trage diesen Punktwert auf "Punkte" neben der Zeitangabe ein, die zuvor auf dem Tabellenblatt eingetragen wurde.
Suche die gemerkte Zahl aus Spalte A auf "Mitglieder Spiridon" und merke das Geburtsjahr, das in Spalte H steht. Suche nach diesem Geburtsjahr auf "Altersfaktor" und merke den diesem Geburtsjahr zugeordneten Multiplikationsfaktor aus Spalte F von diesem Tabellenblatt.
Multipliziere den zuvor eingetragenen Punktwert auf "Punkte" mit diesem Faktor und trage in neben diesem Punktwert in der Spalte AKP ein.
Gehe in die nächste Zeile.
Mache das solange, bis in der nächsten Zeile kein Wert mehr in Spalte A steht.
In der hochgeladenen Datei stehen auf:
Auswertung 2013: Spalte A-H: alle für die Wertung zu berücksichtigenden Läufe mit den Punkten, die der W(ettkampf)Zeit zugeordnet waren und daneben die Punkte, die sich auf Grund des Altersfaktors daraus ergaben. (Falls der entsprechend zu konstruierende VBA-Code korrekt wäre müsste die Rangfolge mit den Daten aus 2013 zur gleichen tabelle führen wie hier in den Spalten J-Q.
Läufe 2013: alle Läufe aus dem Jahr
Altersfaktor: der Altersfaktor in Abhängigkeit von Geburtsjahr und aktuellem Kalenderjahr
Spiridon-Tabellen: Strecken mit Punktangaben für Zeiten (Momentan werden maximal die 5 besten Punktergebnisse je Läufer berücksichtigt. Hier ist theoretisch eine Änderung möglich. ebenfalls werden nur Zeit NICHT die Punkte aus 0,8km UND 1,5km berücksichtigt, sondern nur der bessere Wert, auch, wenn dadurch möglicgherweise nur Punkte für 4 verschiedene Strecken vergeben werden.
Läufe: hier sind nur die relevanten Daten vom anderen Kalenderblätt herüber kopiert worden. Falls hier Laufstrecken auftauchen, die nicht auf dem tabellenblatt Spiridon-Tabellen stehen, muss hier der Ablauf stoppen, damit geprüft werden kann, ob ggf. ein Tippfehler vorliegt.
Läufe Spiridon: jeweils auf die schnellsten Läufe der Mitglieder reduziert. (Warum ein Vorgänger hier z.B. 21,097 als Halb-Mara anzeigen lässt weiß ich nicht. Es kann natürlich auch anders angezeigt werden.)
Mitglieder: Hier sind alle Vereinsmitglieder mit Zusatzinformationen (Geschlecht / Geburtsjahr) aufgeführt
Mitglieder Spiridon: enthält keine Mitglieder, die bis spätestens 31.12. des jeweiligen Vorjahres gekündigt haben.
Punkte: hier werden die sich aus den Laufzeiten ergebenden Punkte nd die sich jeweils ergebenden AKP (Altersklassenpunkte)eingetragen (und später als Rangliste gedruckt - aber das ist ein anderes Thema)
möglicher Berechnungsablauf: Hier habe ich unter 4. den möglichen Programmierablauf skizziert.
Infos: hier stehen Angaben zu Gedanken im Zusammenhang mit der Tabelle
Vielen Dank überhaupt schon mal für das Lesen meiner Problemstellung!
Freundliche Grüße von
Jürgen