Waar te beginnen...
Eerst de algemene opzet: ik organiseer een competitie met een 20-tal speeldagen. Elke speeldag wordt gekeken naar het aantal spelers dat opdaagt. Dat kunnen er 10 zijn of 20, 40... Alle spelers hebben een plaats in een ranking, dat is een getal de zogenaamde elo-waarde. Die waarde is een weergave van hoe goed ze zijn. Een voorbeeld uit het schaken: ik heb een elo van 1400, Magnus Carlsen de wereldkampioen heeft er 2842. Wat gebeurt er nu als we tegen elkaar spelen? Wel, als ik win of gelijk speel, dan win ik enorm veel punten omdat hij er veel meer heeft dan mij ; verlies ik dan wint hij niks omdat ik puntsgewijs niets voorstel.
Dat berekenen is op zich simpel. Het verloopt allemaal via vaste formules. Wat het allemaal wat omslachtiger maakt is dat er heel wat waarden moeten opgezocht worden. [tabbladen 'main' - 'verschil groot klein' & 'k-waarde' --> vandaar het veelvuldige gebruik van de vertzoeken functie]
> Van elke speler moet je zijn (start)elo-punten weten. Iedereen begint met 1000 elo-punten [tabblad K-waarde]
> En een K-waarde: dit is een getal van 0 tot 40. (hoe meer matchen je speelt hoe lager deze waarde) [tabblad K-waarde]
> Van elke speler moet je de kans weten die hij heeft om de match te winnen. Daarvoor neem je het verschil tussen hun elo-waarden. Heb ik er 1500 en mijn tegenstander
ook, dan hebben we elk 50% kans om te winnen. [tabblad verschil sterk zwak] Dat wordt dan voor beiden het getal 0,5. Deze waarden zoek je op in de lijst.
Heb ik er 1800 en mijn tegenstander 1400 (een verschil van 400) dan heb ik 92% kans (0,92) en mijn tegenstander 8% (0,08) kans om te winnen.
> En dan de uiteindelijke berekening:
K-waarde x (het resultaat - het verwachte resultaat) Ik ga uit van: mijn elo = 1800 en mijn K-waarde =40. Mijn tegenstander K=40 & elo = 1400
Er zijn 3 mogelijke scenario's: ik win - speel gelijk - verlies
bv: 40 x (1 (ik win) - 0,92) ik win 3,2 punten en mijn tegenstander verliest 40 x (0 - 0,08) 3,2 elo-punten
40 x (0,5 (gelijk) - 0,92) --> ik verlies 16,8 40 x (0,5 - 0,08) --> hij wint 16,8 punten
40 x (0 (verlies) - 0,92) --> ik verlies 36,8 40 x (1 - 0,08) ---> hij wint 36,8 punten
Hopelijk was het wat duidelijk?
Na de theorie, de praktijk. We keren terug naar mijn competitie die ik in de start vermeldde. Elke speeldag doorlopen we dezelfde stappen
Wat gebeurt op een speeldag?
1. Ik bekijk wie er is en check hun elo-waarde. Die worden gerangschikt van hoog naar laag.
2. Ik maak daarna duo's. Ik combineer de hoogste speler met de laagste, de 2e hoogste met de 2e laagste. (*)
3. Deze duo's komen in een lijst te staan (main tabblad - tabel 3 DUO's)
4. Dan worden de matchen gemaakt: het hoogste duo tegen het laagste, het 2e hoogste tegen het 2e laagste... (**)
5. De uitslag wordt bepaald: 1 voor winst - 0,5 gelijk - 0 bij verlies [main tabblad - tabel ronde 1]
6. De formules berekenen automatisch hoeveel elo's je wint of verliest. [main tabblad - tabel ronde 1]
7. Laatste stap. Elke aanwezige speler moet een update krijgen van zijn elo's: dus de punten die hij won/verloor worden verrekend met zijn startelo.
vb: Ik startte met 1000 elo - ik won de match en verdiende 26 punten ---> mijn nieuwe startelo = 1026. Dat van mijn tegenstander moet uiteraard ook aangepast worden.
(*) Omdat we werken met duo's, kan je niet het elo of k-waarde van 1 persoon nemen. Ik neem telkens het gemiddelde. [main tabblad - tabel ronde 1]
(**) De tabbladen 'matchen' en 'test' kan je negeren. Ik vergat ze te verwijderen.
Wat zoek ik nu concreet?
Alle formules werken, daar is geen werk meer aan... Maar in mijn bestand moet je enkel het groene nog manueel aanvullen in de tabellen. Ik zoek dus eigenlijk een manier om alles simpeler (automatischer) te laten verlopen. Ik kan ermee werken, maar voor een leek is het overweldigend. Ik zou het dus zo willen maken dat iedereen die iets van excel weet met slechts een paar 'klikken' hoeft te werken. Niks kopiëren en dergelijke. Alles wat in de excel [main tabblad] groen gekleurd staat bij 'hoe gebruiken' zou ik of 1 of andere manieren willen automatiseren. Dat kan met macro's, fomulieren, Vbasic... maar van al die dingen weet ik niet genoeg.
Het oog wil ook wat, visueel kan het ook wat strakker. Is het beter om formulieren te gebruiken? Ik kan bv makkelijk een nieuwe speler toevoegen. Maar er moet daarvoor in 2 tabbladen (k-waarde / start elo) iets ingevuld worden. Hoe kan een leek zoiets foutloos uitvoeren?