Hoe waarden per groep te rangschikken in Excel?
Werken met gegroepeerde gegevens in Excel vereist vaak het vergelijken van waarden binnen elke groep, zoals de rangschikking van verkoopcijfers per regio, testresultaten per klas of transactiebedragen per categorie. Hoewel Excel krachtige tools biedt voor het rangschikken van gegevens, vereist het rangschikken binnen groepen (ook wel 'group-wise ranking' of 'voorwaardelijke rangschikking' genoemd) een specifieke aanpak. Dit is vooral handig wanneer je prestaties wilt evalueren of top- en onderste records wilt identificeren binnen verschillende categorieën zonder de resultaten tussen groepen door elkaar te halen. De volgende methoden verkennen praktische oplossingen om waarden per groep te rangschikken, waardoor het gemakkelijker wordt om je gegevens nauwkeurig te interpreteren en analyseren in dagelijkse taken.
Waarden per groep rangschikken
VBA-code - Gebruik een macro om het rangschikken van waarden binnen elke groep te automatiseren
Waarden per groep rangschikken
In situaties waarin je waarden binnen verschillende groepen moet rangschikken, zoals het beoordelen van studenten per klas of het weergeven van verkoop per verschillende regio's, heeft Excel geen directe functie voor 'rangschikken per groep'. Echter kan een goed ontworpen formule efficiënt groepsgewijze rangschikking bereiken zonder extra datamanipulatie.
Hiervoor kun je een matrixformule gebruiken die logische tests combineert met aggregatiefuncties. Deze aanpak laat je toe om elke waarde alleen binnen zijn aangewezen groep te vergelijken, wat de vereiste rangorde oplevert voor elk datapunt.
Volg deze stappen:
- Organiseer je gegroepeerde gegevens in kolommen, zoals Groep (A2:A11) en Waarde (B2:B11).
- Selecteer een lege cel naast je gegevens – meestal in de eerste rij naast je waarden, bijvoorbeeld cel C2.
- Voer de volgende formule in:
=SUMPRODUCT(($A$2:$A$11=A2)*(B2<$B$2:$B$11))+1
Deze formule werkt door te tellen hoeveel waarden binnen dezelfde groep kleiner zijn dan de huidige waarde. Hier is wat elke parameter betekent:
- ($A$2:$A$11=A2)
→ Dit controleert of elke cel in het bereik A2:A11 gelijk is aan de waarde in A2.
→ Het retourneert een reeks WAAR/ONWAAR (of 1/0) waarden die aangeven of elke rij tot dezelfde groep behoort als A2. - (B2<$B$2:$B$11)
→ Dit controleert hoeveel waarden in B2:B11 groter zijn dan B2.
→ Het retourneert WAAR (1) als B2 kleiner is dan een gegeven waarde, ONWAAR (0) anders. - * (Vermenigvuldiging)
→ Dit combineert de twee voorwaarden: - Groepsovereenkomst (A2)
Waarde in B2 is kleiner dan andere
→ Dus alleen rijen die in dezelfde groep zitten en een kleinere waarde hebben, worden geteld. - SOMPRODUCT(...)
→ Telt het aantal rijen dat aan beide voorwaarden voldoet. - +1
→ Rangen beginnen bij 1 (in plaats van 0), dus tellen we 1 op bij het aantal kleinere waarden.
Zodra de formule is ingevoerd in C2, sleep dan de automatisch invulgreep naar beneden om deze formule in te vullen voor alle relevante rijen in je dataset. De formule past zich automatisch aan om de groep en waarde van elke rij te gebruiken, en retourneert de rangorde binnen die groep.
Tips en voorzorgsmaatregelen:
- Als je bereik groot is, vergeet dan niet om de celverwijzingen dienovereenkomstig bij te werken.
- Voor rangordes in aflopende volgorde (bijv. hoogste waarde is 1), wijzig dan de formulevergelijking van
B2<$B$2:$B$11
naarB2>$B$2:$B$11
. - Om dubbele waarden te verwerken, wijst deze formule dezelfde rangorde toe aan gelijke waarden binnen dezelfde groep. Als je sequentiële unieke rangordes nodig hebt, overweeg dan om extra hulpkolommen te gebruiken.
Deze formule-gebaseerde methode is flexibel en past gemakkelijk toe op de meeste gegroepeerde tabelstructuren in Excel. Echter, voor zeer grote datasets kan de berekeningsprestatie vertragen vanwege de afhankelijkheid van matrixlogica.
VBA-code - Gebruik een macro om het rangschikken van waarden binnen elke groep te automatiseren
Voor gebruikers die het rangschikkingsproces willen automatiseren, of grotere datasets efficiënter willen verwerken, kan het schrijven van een VBA-macro een waardevolle aanpak zijn. Macros kunnen herhalende stappen automatiseren, meer aanpassingen bieden en gegevens sneller verwerken in vergelijking met complexe formules. Dit is ideaal voor scenario's zoals het genereren van geplande rapporten, herhaalde rangschikkingstaken, of wanneer je formule-overlast in je werkblad wilt vermijden.
Voordat je verder gaat, zorg er dan voor dat je je werk opslaat en macros inschakelt in je Excel-instellingen. Zo kun je dit scripten en uitvoeren:
- Druk op Alt + F11 toetsen om de VBA-editor te openen. Klik in het venster Microsoft Visual Basic for Applications dat verschijnt op Invoegen > Module, en plak vervolgens de volgende code in de geopende module:
Sub RankValuesByGroup()
Dim DataRange As Range
Dim GroupRng As Range
Dim ValueRng As Range
Dim OutCol As Range
Dim dictGroups As Object
Dim arrValues, arrRanks
Dim i As Long, j As Long
Dim GroupKey As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set DataRange = Application.InputBox("Select the data table range (including group and value columns)", xTitleId, Selection.Address, Type:=8)
If DataRange Is Nothing Then Exit Sub
Set GroupRng = Application.InputBox("Select the group column within your range", xTitleId, DataRange.Columns(1).Address, Type:=8)
Set ValueRng = Application.InputBox("Select the value column to rank within your range", xTitleId, DataRange.Columns(2).Address, Type:=8)
Set OutCol = DataRange.Offset(0, DataRange.Columns.Count).Resize(DataRange.Rows.Count, 1)
OutCol.Cells(1).Value = "RankByGroup"
Set dictGroups = CreateObject("Scripting.Dictionary")
arrValues = ValueRng.Value
arrRanks = ValueRng.Value
' Build group dictionaries for ranking
For i = 2 To UBound(arrValues, 1)
GroupKey = GroupRng.Cells(i, 1).Value
If Not dictGroups.Exists(GroupKey) Then
dictGroups.Add GroupKey, CreateObject("System.Collections.ArrayList")
End If
dictGroups(GroupKey).Add arrValues(i, 1)
Next i
' Rank within each group
For i = 2 To UBound(arrValues, 1)
GroupKey = GroupRng.Cells(i, 1).Value
Dim countLower As Long
countLower = 0
For j = 0 To dictGroups(GroupKey).Count - 1
If dictGroups(GroupKey)(j) < arrValues(i, 1) Then
countLower = countLower + 1
End If
Next j
arrRanks(i, 1) = countLower + 1
Next i
' Output results
For i = 2 To UBound(arrRanks, 1)
OutCol.Cells(i, 1).Value = arrRanks(i, 1)
Next i
MsgBox "Ranking by group completed.", vbInformation, xTitleId
End Sub
- Klik op Uitvoeren. Er verschijnt een dialoogvenster waarin je wordt gevraagd je volledige gegevensbereik, groepskolom en waardekolom te selecteren. De macro genereert vervolgens een nieuwe kolom met de rangordes voor elke waarde binnen zijn groep.
Opmerkingen en probleemoplossing:
- Zorg ervoor dat kolomselecties overeenkomen met je gegevens: de groep- en waardekolommen moeten correct uitlijnen.
- Als de gegevenskop is opgenomen, pas dan de initiële lusindex in de code aan voor correcte rangschikking (volgens je gegevensstructuur).
- Om in aflopende volgorde te rangschikken, wijzig dan de vergelijking
If dictGroups(GroupKey)(j) < arrValues(i,1)
dienovereenkomstig. - Als je tegen toestemmings- of macro-beveiligingswaarschuwingen aanloopt, controleer dan de Macro-beveiligingsinstellingen van Excel onder Bestand > Opties > Trust Center.
Deze VBA-methode biedt flexibiliteit en robuuste prestaties voor meer geavanceerde of opgeschaalde toepassingen, vooral wanneer deze wordt geïntegreerd met geautomatiseerde rapportagewerkstromen.

Ontdek de Magie van Excel met Kutools AI
- Slimme Uitvoering: Voer celbewerkingen uit, analyseer gegevens en maak diagrammen – allemaal aangestuurd door eenvoudige commando's.
- Aangepaste Formules: Genereer op maat gemaakte formules om uw workflows te versnellen.
- VBA-codering: Schrijf en implementeer VBA-code moeiteloos.
- Formule-uitleg: Begrijp complexe formules gemakkelijk.
- Tekstvertaling: Overbrug taalbarrières binnen uw spreadsheets.
Beste productiviteitstools voor Office
Verbeter je Excel-vaardigheden met Kutools voor Excel en ervaar ongeëvenaarde efficiëntie. Kutools voor Excel biedt meer dan300 geavanceerde functies om je productiviteit te verhogen en tijd te besparen. Klik hier om de functie te kiezen die je het meest nodig hebt...
Office Tab brengt een tabbladinterface naar Office en maakt je werk veel eenvoudiger
- Activeer tabbladbewerking en -lezen in Word, Excel, PowerPoint, Publisher, Access, Visio en Project.
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
- Verhoog je productiviteit met50% en bespaar dagelijks honderden muisklikken!
Alle Kutools-invoegtoepassingen. Eén installatieprogramma
Kutools for Office-suite bundelt invoegtoepassingen voor Excel, Word, Outlook & PowerPoint plus Office Tab Pro, ideaal voor teams die werken met Office-toepassingen.





- Alles-in-één suite — invoegtoepassingen voor Excel, Word, Outlook & PowerPoint + Office Tab Pro
- Eén installatieprogramma, één licentie — in enkele minuten geïnstalleerd (MSI-ready)
- Werkt beter samen — gestroomlijnde productiviteit over meerdere Office-toepassingen
- 30 dagen volledige proef — geen registratie, geen creditcard nodig
- Beste prijs — bespaar ten opzichte van losse aanschaf van invoegtoepassingen