Hoe maak ik een automatische rangschikking in Excel? RANK()

Posted on september 6, 2008 door

6


Stel: je wil een pronostiek organiseren en hebt hiervoor een prachtig puntensysteem uitgedokterd. Alleen: hoe kan je nu de rangschikking van de ploegen zich automatisch laten aanpassen naarmate de puntentotalen veranderen?

Simpel:
Stap 1: Je vertrekt van een lijst van ploegen, collega’s of namen, waar je de punten achter zet.
Rangschikking Stap 1

Rangschikking Stap 1

Kijk verder…

Stap 2: Gebruik de RANK() functie om de scores een rangschikkingsnummer te geven. Let hierbij wel op: blokkeer met $-tekens je range!
Deze functie heeft als uitkomst de positie die een waarde heeft binnen een range.
Rangschikking Stap 2

Rangschikking Stap 2

Stap 3: Maak een lijstje met de nummers van 1 tot het aantal ploegen dat er zijn (in dit geval 6).
Rangschikking Stap 3

Rangschikking Stap 3

Stap 4: Zometeen gebruiken we VLOOKUP() om de posities juist te zetten. Daarvoor is het noodzakelijk dat de ploegnamen ACHTER de posities staan.
Rangschikking Stap 4

Rangschikking Stap 4

Stap 5: Het moment suprême: gebruik VLOOKUP() om je rangschikking af te werken!
Rangschikking Stap 5

Rangschikking Stap 5

Stap 6: De formule doortrekken, en klaar!
Rangschikking Stap 6

Rangschikking Stap 6

De aandachtige lezer heeft gezien dat in stap 6 de score van “Internazionale” is aangepast naar 19. Als de score 18 zou zijn krijg je bij de VLOOKUP() een #N/A melding (aangezien positie 5 niet zal voorkomen).

Wat bij gelijke scores?

Om problemen bij gelijke scores te vermijden stel ik volgende oplossing voor: in plaats van RANK() te gebruiken, met ’t risico dat een positie niet voorkomt kan je volgende formule gebruiken: 
=IF(COUNTIF($C$4:C5;RANK(B6;$B$4:$B$9))>0;RANK(B6;$B$4:$B$9)+
COUNTIF($C$4:C5;RANK(B6;$B$4:$B$9));RANK(B6;$B$4:$B$9))
We gebruiken dus een IF() formule:
In het eerste stuk controleren we of de huidige ranking al voorkomt in de cellen boven de actieve cel.
Als dit zo is (de COUNTIF() geeft een waarde die groter is dan 0), dan tellen we 2 zaken op:
  1. de ranking van de actieve (huidige) cel
  2. het aantal keren dat deze waarde al voorkomt boven de actieve (huidige) cel.

Als dit niet zo is houden we het bij de originele RANK() formule.

In ons voorbeeld: we tellen hoeveel keer score 18 voorkomt boven de huidige cel (B9, de score van Internazionale). Dit is 1 keer, dus groter dan 0. We zullen dan de ranking die deze waarde heeft (4, dezelfde als AC Milan) hierbij optellen. Zo komen we 5 uit.
Heb je hier vragen over? Laat gerust iets weten in de comments!
Advertenties