• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

automatische Rangschikking

  • Onderwerp starter Onderwerp starter Fubi
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Fubi

Gebruiker
Lid geworden
19 feb 2004
Berichten
39
Kan mij iemand eens helpen met het automatisch rankschikken van een tabel ?


bv:
Ploeg1 2 1 0 7 ptn
Ploeg2 1 0 1 3 ptn
Ploeg3 0 2 1 2 ptn
Ploeg4 1 2 0 5 ptn
Ploeg5 0 3 0 3 ptn

Nu zou ik graag hieronder een automatische rankschikking willen hebben op punten, en indien mogelijk op meeste gewonnen wedstrijden indien aantal punten gelijk is.
Dus indien er boven iets verandert, dat hij de rankschikking auto.aanpast.

Ploeg1 2 1 0 7 ptn
Ploeg4 1 2 0 5 ptn
Ploeg2 1 0 1 3 ptn
Ploeg5 0 3 0 3 ptn
Ploeg3 0 2 1 2 ptn


Ik heb zo goed als geen idee hoe ik hier aan moet beginnen

:confused:
 
Laatst bewerkt:
Ik kan je in ieder geval op weg helpen.

Als je de gehele tabel selecteerd en vervolgens naar het tabblad > Data en vervolgens > Sorteren...

Kun je daar opgeven op welke kolom deze moet sorteren en/of het oplopend of aflopend moet zijn.

Dit dien je wel elke keer handmatig te doen.
(echter kan het ook met een macro kijk eerst maar eens).
 
ik wel, (met een macro)

alleen jammer dat je het bestandje niet even als zipper hebt bijgevoegd, dat was makkelijker geweest.


Relatief simpel op te lossen, start de macrofunctie middels het menu extra en kies voor macro's, nieuwe macro. Wijs een of andere logische toets toe aan de macro (bijvoorbeeld de S van sorteren)

Alle handelingen die je nu gaat verrichten worden door de macro "opgenomen" :

selecteer ALLE regels en kolommen en kies vervolgens voor "Data" en dan voor sorteren.

Afhankeliijk van het feit of je bovenste rij veldnamen bevat laat je die rij meesorteren / of niet.
Laat vervolgens de prioriteit in kolommen bepalen HOE Excel moet sortereren en beeindig de macro door op "stop" te klikken.

Als je nu wijzigingen aanbrengt in de tabel gebeurt er nog niets, maar druk je op CTR-S dan sorteert de macro de tabel voor je.
 
Laatst bewerkt:
ik voeg in dit bericht en in het volgende bericht een bestandje bij:

onderstaand bestandje is een voorbeeldje van een werkblad ZONDER macro.

Om een correcte weergave van de clubs te krijgen is het handig om 3 kolommen toe te voegen :

doelpunten VOOR
doelpunten TEGEN en
doelsaldo +/-

deze kolommen heb je nodig om uiteindelijk te bepalen welke club hoger moet staan dan de andere bij een gelijk aantal punten,....... toch..............?
 

Bijlagen

In DIT bericht een bestandje bijgevoegd MET macro.

Verander van de laatste ploeg het aantal punten maar eens naar (bijvoorbeeld) 10 en de voorlaatste op 45 punten en druk daarna op CTRL-s.

Excel sorteert vervolgens automatisch voor je.

Suc6!
 

Bijlagen

Bedankt voor de hulp, maar ik zoek eigenlijk een oplossing zonder gebruik te maken van macro's :o
 
Hoi Fubi,

Wat je wilt moet in twee stappen. Een tabel met de ploegen op volgorde (1,2,3,4,5) met daarachter een code. Die code maak je uniek.
K10: =aantal.als(E$10:E$15;"<="&E10)*10+(10-aantal.als(B$10:B$15;"<="&B10))+Rij()/100
In E10 t/m E15 staan de punten die de ploegen verzameld hebben, in B10 t/m B15 het aantal wedstrijden (10- gebruiken omdat hoe minder wedstrijden hoe beter). Die code kun je natuurlijk uitbreiden met bijvoorbeeld doelsaldo en doelpunten voor. Dankzij Rij()/100 voorkom je dat een ploeg met evenveel punten in evenveel wedstrijden op exact dezelfde plaats in de rangschikking komen te staan.

In de twee stap zorg je dat op kolom K10:K15 wordt gesorteerd:

K25: =vergelijken(grootste(K$10:K$15;rijen(K$25:K25));K$10:K$15;0)

In K25:K30 verschijnen nu de indexnummers van je compititie.
Met:
A25: =Index(A$10:A$15;$K25)
sorteer je de ploegen op volgorde van hoog naar laag.

Indien je interesse hebt in een programma dat ik voor een handbalcompetitie heb gemaakt mail je me maar.

Jeroen
 
Ben wel geintresseerd in dat bestand.

U bent geen verenigingslid. De optie om Priveberichten te sturen is uitgeschakeld.

Ik wou nog een Pm sturen ivm dat bestand, maar blijkbaar gaat dat niet.
 
Hoi Fubi,

Ik had je bericht ontvangen, maar tot nu toe nog niet gereageerd. Ik wilde een korte toelichting bij de e-mail doen omdat je anders verdrinkt in de formules.

Jeroen
 
Indrukwekkend script/xls bestand, maar ben bang dat dit mijn petje te boven gaat als ik mijn eigen wil maken.

Nu zou ik graag zien dat de rankschikking automatisch updated als ik de laatste score invul.
 

Bijlagen

  • rankschikking.jpg
    rankschikking.jpg
    37,3 KB · Weergaven: 114
Hoi Fubi,

Erg eenvoudig progje, dat van jou, maar laat je niet verblinden door uitgebreidheid van mijn sheet. Het lijkt ingewikkeld door het grote aantal teams en competities.

In dit geval: Voeg een extra kolom toe waarin je zet wat de uitslag voor de thuisspelende ploeg was (2 punten voor winst; 1 voor gelijkspel; 0 voor verlies en -1 voor nog niet gespeeld). Bijvoorbeeld kolom T2 t/m T7.
=als(aantal(E2;G2)<2;-1;(E2>G2)*2+(E2=G2))

In V2 t/m V5 zet je namen van de teams 1 t/m team4.
In W2 t/m W5 de punten van de teams:
=somproduct(($B$2:$B$7=$V2)*($T$2:$T$7>=0)*($T$2:$T$7))+somproduct(($D$2:$D$7=$V2)*($T$2:$T$7>=0))*2-somproduct(($D$2:$D$7=$V2)*($T$2:$T$7>=0)*($T$2:$T$7))
De eerste somproduct telt de punten in thuiswedstrijden, de 2e het aantal uitwedstrijden gespeeld. Vermenigvuldig dit met 2 en je hebt het aantalpunten dat behaald had kunnen worden en trk hiervan het aantal punten van de tegenstander (die dus thuisspeelde) ervan af.

Wedstrijden gewonnen/gelijk of verloren:
X2: =somproduct(($B$2:$B$7=$V2)*($T$2:$T$7=2))+somproduct(($D$2:$D$7=$V2)*($T$2:$T$7=0))
Y2: =somproduct(($B$2:$B$7=$V2)*($T$2:$T$7=1))+somproduct(($D$2:$D$7=$V2)*($T$2:$T$7=1))
Z2: =somproduct(($B$2:$B$7=$V2)*($T$2:$T$7=0))+somproduct(($D$2:$D$7=$V2)*($T$2:$T$7=2))
Doelpunten voor en tegen:
AA2: =somproduct(($B$2:$B$7=$V2)*($E$2:$E$7))+somproduct(($D$2:$D$7=$V2)*($G$2:$G$7))
AA2: =somproduct(($B$2:$B$7=$V2)*($G$2:$G$7))+somproduct(($D$2:$D$7=$V2)*($E$2:$E$7))

Nu staat de stand nog niet in de juiste volgorde. Hiervoor moet een code gemaakt waarbij de teams op de juiste wijze gerangschikt worden.
De eerste is natuurlijk het aantal punten:
=W2*10000
Dan natuurlijk het aantal gespeelde wedstrijden (hoe minder wedstrijden hoe beter:
=(9-som(X2:Z2))*1000
Dan het doelsaldo:
=500-(AA2-AB2)*10
Dan het aantal doelpunten voor:
=aantal.als($AA$2:$AA$5;"<="&$AA2)

En tenslotte om ervoor te zorgen dat 2 ploegen nooi gelijk kunnen staan:
=Rij()/100

De totale formule (AD2 t/m AD5) wordt dus:
AD2: =W2*10000+(9-som(X2:Z2))*1000+500-(AA2-AB2)*10+aantal.als($AA$2:$AA$5;"<="&$AA2)+Rij()/100

In S2 t/m S5
S2:=vergelijken(grootste($AE$2:$AE$5;RIJ()-1);$AE$2:$AE$5;0)

Nu kun je de tabel J2:P5 correct invullen:
J2: =index($V$2:$V$5;$S2)
K2: =index($W$2:$W$5;$S2)
enzovoorts

Jeroen
 
:thumb: :thumb: :thumb:

Dit werkt perfect. En wederom een zeer uitgebreid antwoord, wat alles zeer duidelijk maakt.


Nu ga ik proberen om deze uit te breiden naar 8 ploegen :)
 
Hoi Fubi,

Met 8 ploegen in 1 competitie neemt het aantal wedstrijden flink toe, 28 wedstrijden in een enkele competitie (uit of thuis) en 56 wedstrijden in een dubbele competitie.

Je moet overwegen of je niet gebruik gaat maken van een tabel.

Jeroen
 
Kan ik dan nog steeds hetzelfde blad gebruiken, of moeten "we" dan weer vanvoorafaan beginnen ?
 
Hoi Fubi,

Ik kon het niet nalaten :)

en kwam erachter dat het nog veel simpeler kan dan ik dacht.

Jeroen
 

Bijlagen

Het programma ziet er echt geweldig uit.
Maar een probleempje: als twee ploegen precies hetzelfde 'code' hebben, gaat het fout. Dan krijg je twee namen in de ranglijst.
Ik heb je programma gebruikt voor mijn tennisprogramma. Hier is de kans op gelijke code veel groter dan bij voetbal.
 
Hoi Kuifje,

Een van de meest eenvoudige methoden om unieke getallen te maken is om er Rij()/1000 of zoiets bij op te tellen.

In mijn spreadsheet gebruik ik:
AW7 (de code): =AO7*100000+(90-AN7)*1000+500+AU7*10+AANTAL.ALS($AS$7:$AS$14;"<="&AT7)+(RIJEN(AW7:AW$14))/100

Als je er niet uitkomt moet je het progje maar even posten.

Jeroen
 
Ha, ik snap het. ik heb nu $ bij '+(RIJEN(AW7:AW$14))' gezet, dus '+(RIJEN($AW7:$AW$14))', dit voorkomt problemen in de toekomst bij kopieren.

Bedankt! :thumb: :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan