• 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.

sorteren met formules

Status
Niet open voor verdere reacties.

wiba89

Gebruiker
Lid geworden
25 jun 2015
Berichten
31
Ik heb een redelijk ingewikkelde vraag denk ik. Ik moet van bijgevoegd document (via WeTransfer) een ranking maken. Eerst moeten de clubs gesorteerd worden met 0 tekorten (kolom DN) op het aantal punten dat ze hebben gehaald (kolom CU). Vervolgens moeten de clubs komen met 1 tekort (opnieuw kolom DN) met het meeste punten (kolom CU) eerst.
Dan komt de moeilijkheid. Clubs met 2 tekorten binnen dezelfde categorie (dwz als er 2 staat in 1 van volgende kolommen: CZ; DB; DF; DM en 2 in kolom DN) volgen dan.
Dan komen de clubs met 2 tekorten binnen dezelfde categorie (dwz als er 2 staat in 1 van volgende kolommen: CZ; DB; DF; DM en 2 in kolom DN) gerangschikt op punten (kolom CU)
Dan komen de clubs met 3 tekorten met maximaal 2 tekorten binnen dezelfde categorie (dwz als er 2 staat in 1 van volgende kolommen: CZ; DB; DF; DM en 2 in kolom DN) gerangschikt op punten (kolom CU)
Dan komen de clubs met 4 tekorten met maximaal 2 tekorten binnen dezelfde categorie (dwz als er 2 staat in 1 van volgende kolommen: CZ; DB; DF; DM en 2 in kolom DN) gerangschikt op punten
Dan komen de clubs met 4 tekorten met meer dan 2 tekorten binnen dezelfde categorie (dwz als er 3 staat in 1 van volgende kolommen: CZ; DB; DF; DM en 2 in kolom DN) gerangschikt op punten
Dan komen de clubs met 5 tekorten gerangschikt op punten
Dan komen de clubs met 6 tekorten gerangschikt op punten
Dan komen de clubs met 7 tekorten gerangschikt op punten
...
Eventueel meer info in het Word-Document
http://we.tl/e8HHfRWFat
Bekijk bijlage Labels.docx

Bedankt alvast! Ik hoop dat jullie mij kunnen helpen.
 
of een eenvoudige macro zoals
Code:
Sub Macro1()

Sheets("Overzichtstabel").Cells.Copy
With Sheets("Ranking").Cells
    .PasteSpecial Paste:=xlPasteAll
    lr = Sheets("Ranking").UsedRange.Rows.Count
    Sheets("Ranking").Sort.SortFields.Clear
    Sheets("Ranking").Sort.SortFields.Add Key:=Range("DN6", "DN" & lr), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    Sheets("Ranking").Sort.SortFields.Add Key:=Range("CU6", "CU" & lr), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With Sheets("Ranking").Sort
        .SetRange Range("A6", "DO" & lr)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub

mvg
Leo
 
Bedankt. Het is bijna exact wat we nodig hebben. Alleen zou er nog rekening gehouden moeten worden met het aantal tekorten per categorie. Voor 'goud' mogen er maximaal 2 tekorten zijn, maar niet in dezelfde categorie.
Voor 'zilver' mogen er maximaal 4 tekorten zijn, maar maximaal 2 in in categorie.
Voor 'brons' mogen maximaal 7 tekorten zijn.
 
ik denk dat ik ergens over zie
waar ergens in bestand is iets van goud, zilver of brons te vinden ?

mvg
Leo
 
Goud, zilver en brons zit er inderdaad nog niet in verwerkt. Dat moet het uiteindelijke resultaat zijn. Het komt er op neer dat de lijn met ARVOC ARENDONK 'slechter' scoort dan REMBERT TORHOUT. Torhout wordt met uw macro 2 plaatsen lager geklasseerd. Probleem is dat Arendonk 2 tekorten heeft in 1 categorie.
Dus, de besten zijn die met 0 tekorten.
Dan volgen die met 1 tekort.
Dan die met 2 tekorten, maar die mogen niet in dezelfde categorie zijn (dwz: CZ, DB, DF en DM<2).
Dan die met 2 tekorten, maar die zitten wel in dezelfde categorie (dwz: CZ, DB, DF of DM=2).
Dan die met 3 tekorten, maar er mogen geen 3 tekorten binnen dezelfde categorie vallen (dwz: CZ, DB, DF en DM<3).
Dan die met 4 tekorten, maar er mogen geen 3 tekorten binnen dezelfde categorie vallen (dwz: CZ, DB, DF en DM<3).
dan volgen die met 3 tekorten, maar die zitten allemaal in dezelfde categorie (dwz: CZ, DB, DF of DM=3).
Dan volgen die met 4 tekorten, waarvan 3 in dezelfde categorie (dwz: CZ, DB, DF of DM>3).
Dan volgen die met 5 tekorten,
dan die met 6 en
dan die met 7.
Die moeten telkens op de punten gerangschikt worden (kolom CU)

Merci alvast.
 
voorlopig niet, lastige, voor mij toch is dat tussen 3 te korten niet in zelfde categorie en 3 te korten in zelfde categorie
de 4 te korten niet in zelfde categorie moeten komen. Dus voorlopig zit ik vast.


mvg
Leo
 
of misschien toch
probeer deze eens

Code:
Sub Macro4()
Application.ScreenUpdating = False
With Sheets("Overzichtstabel")
    lr = .UsedRange.Rows.Count
For Each cl In Range("DP6", "DP" & lr)
    If cl.Offset(, -2).Value = 0 And cl.Offset(, -2) <> vbNullString Then cl.Value = "A"
    If cl.Offset(, -2).Value = 1 Then cl.Value = "B"
    If cl.Offset(, -2).Value = 2 Then
        If cl.Offset(, -3).Value <> 2 Or cl.Offset(, -10).Value <> 2 Or cl.Offset(, -14).Value <> 2 Or cl.Offset(, -16).Value <> 2 Then cl.Value = "C"
        If cl.Offset(, -3).Value = 2 Or cl.Offset(, -10).Value = 2 Or cl.Offset(, -14).Value = 2 Or cl.Offset(, -16).Value = 2 Then cl.Value = "D"
    End If
    If cl.Offset(, -2).Value = 3 Then
        If cl.Offset(, -3).Value <> 3 Or cl.Offset(, -10).Value <> 3 Or cl.Offset(, -14).Value <> 3 Or cl.Offset(, -16).Value <> 3 Then cl.Value = "E"
        If cl.Offset(, -3).Value = 3 Or cl.Offset(, -10).Value = 3 Or cl.Offset(, -14).Value = 3 Or cl.Offset(, -16).Value = 3 Then cl.Value = "G"
    End If

    If cl.Offset(, -2).Value = 4 Then
        If cl.Offset(, -3).Value <> 3 Or cl.Offset(, -10).Value <> 3 Or cl.Offset(, -14).Value <> 3 Or cl.Offset(, -16).Value <> 3 Then cl.Value = "F"
        If cl.Offset(, -3).Value = 3 Or cl.Offset(, -10).Value = 3 Or cl.Offset(, -14).Value = 3 Or cl.Offset(, -16).Value = 3 Then cl.Value = "H"
    End If
    If cl.Offset(, -2).Value = 5 Then cl.Value = "I"
    If cl.Offset(, -2).Value = 6 Then cl.Value = "J"
    If cl.Offset(, -2).Value = 7 Then cl.Value = "K"
    If cl.Offset(, -2).Value = 8 Then cl.Value = "L"
    If cl.Offset(, -2).Value = 9 Then cl.Value = "M"
    If cl.Offset(, -2).Value = 10 Then cl.Value = "N"
    If cl.Offset(, -2).Value > 10 Then cl.Value = "O"
Next
    .Cells.Copy
End With
With Sheets("Ranking").Cells
    .PasteSpecial Paste:=xlPasteAll
    lr = Sheets("Ranking").UsedRange.Rows.Count
    Sheets("Ranking").Sort.SortFields.Clear
    Sheets("Ranking").Sort.SortFields.Add Key:=Range("DP6", "DP" & lr), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    Sheets("Ranking").Sort.SortFields.Add Key:=Range("CU6", "CU" & lr), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With Sheets("Ranking").Sort
        .SetRange Range("A6", "DP" & lr)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Opgepast kolom DP wordt gevuld door macro
niet moeders mooiste maar denk dat het werkt
mvg
Leo
 
Leo, hoedje af!! 1 probleempje nog. Kleintje volgens mij. Als ik er nu zaken in aanpas, worden die volgens mij niet automatisch bijgewerkt als ik aanpassingen doorvoer in het eerste tabblad? of zie ik het verkeerd?

Misschien is het al opgelost. Ik zie dat het wel aangepast wordt als ik de macro nog eens uitvoer (in het tabblad 'overzichtstabel'). Dat moet ik dus manueel doen. klopt dit? als dit zo is, mag wat mij betreft hier een slotje op, want dan is het in orde.

Merci!
 
Laatst bewerkt:
2 mogelijke oplossingen,

1 ste is tabblad ranking terug aanmaken
2 de is in code iedere sheets("ranking") aanpassen naar sheets("naam van blad")


mvg
Leo
 
zie juist dat je berichtje is aangepast, om altijd de juiste stand in blad ranking te zien de code
best zetten achter werblad "ranking" zo wordt code uitgevoerd telkens blad ranking geactiveerd wordt.

Code:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
With Sheets("Overzichtstabel")
    lr = .UsedRange.Rows.Count
For Each cl In Range("DP6", "DP" & lr)
    If cl.Offset(, -2).Value = 0 And cl.Offset(, -2) <> vbNullString Then cl.Value = "A"
    If cl.Offset(, -2).Value = 1 Then cl.Value = "B"
    If cl.Offset(, -2).Value = 2 Then
        If cl.Offset(, -3).Value <> 2 Or cl.Offset(, -10).Value <> 2 Or cl.Offset(, -14).Value <> 2 Or cl.Offset(, -16).Value <> 2 Then cl.Value = "C"
        If cl.Offset(, -3).Value = 2 Or cl.Offset(, -10).Value = 2 Or cl.Offset(, -14).Value = 2 Or cl.Offset(, -16).Value = 2 Then cl.Value = "D"
    End If
    If cl.Offset(, -2).Value = 3 Then
        If cl.Offset(, -3).Value <> 3 Or cl.Offset(, -10).Value <> 3 Or cl.Offset(, -14).Value <> 3 Or cl.Offset(, -16).Value <> 3 Then cl.Value = "E"
        If cl.Offset(, -3).Value = 3 Or cl.Offset(, -10).Value = 3 Or cl.Offset(, -14).Value = 3 Or cl.Offset(, -16).Value = 3 Then cl.Value = "G"
    End If

    If cl.Offset(, -2).Value = 4 Then
        If cl.Offset(, -3).Value <> 3 Or cl.Offset(, -10).Value <> 3 Or cl.Offset(, -14).Value <> 3 Or cl.Offset(, -16).Value <> 3 Then cl.Value = "F"
        If cl.Offset(, -3).Value = 3 Or cl.Offset(, -10).Value = 3 Or cl.Offset(, -14).Value = 3 Or cl.Offset(, -16).Value = 3 Then cl.Value = "H"
    End If
    If cl.Offset(, -2).Value = 5 Then cl.Value = "I"
    If cl.Offset(, -2).Value = 6 Then cl.Value = "J"
    If cl.Offset(, -2).Value = 7 Then cl.Value = "K"
    If cl.Offset(, -2).Value = 8 Then cl.Value = "L"
    If cl.Offset(, -2).Value = 9 Then cl.Value = "M"
    If cl.Offset(, -2).Value = 10 Then cl.Value = "N"
    If cl.Offset(, -2).Value > 10 Then cl.Value = "O"
Next
    .Cells.Copy
End With
With Sheets("Ranking").Cells
    .PasteSpecial Paste:=xlPasteAll
    lr = Sheets("Ranking").UsedRange.Rows.Count
    Sheets("Ranking").Sort.SortFields.Clear
    Sheets("Ranking").Sort.SortFields.Add Key:=Range("DP6", "DP" & lr), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    Sheets("Ranking").Sort.SortFields.Add Key:=Range("CU6", "CU" & lr), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With Sheets("Ranking").Sort
        .SetRange Range("A6", "DP" & lr)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

mvg
Leo
 
mooi zo,
slotje kan je enkel zelf doen, rechts boven de vraag als opgelost zetten.


mvg
Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan