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

Rang + sumif

Status
Niet open voor verdere reacties.

RaymondC

Gebruiker
Lid geworden
10 mrt 2008
Berichten
561
Hoi Allemaal,

Ik zit met een formule probleem waar ik zelf niet uit kom.

In de kolom met Totaal moet een SUMIF gedaan worden, maar als er ergens een Nul staat is het resultaat NC.
Ranking zou eigenlijk in kolom A moeten komen. (heb deze nu gebruikt ivm vlookup)

En dan moet er gesorteerd worden van nummer naar nummer laatst.

Maar er moet voldaan worden aan volgende voorwaardes:

bij geen enkele Nul: sorteren hoog naar laag van het totaal, deze moeten boven aan staan (bijvoorbeeld van nr1 tem nr 28 is geklasseerd)
bij NC: sorteren van hoog naar laag (bijvoorbeeld nr29 tem nr50), onder de personen die geklasseerd zijn

Bekijk bijlage Invulblad_WT.xlsx
 
De ranking en de SUMIF zijn gedaan.
Dat sorteren hoort een beetje uitleg meer bij.
 

Bijlagen

  • Invulblad_WT(cobbe).xlsx
    33 KB · Weergaven: 28
Cobbe,

Dank je wel voor het eerste stuk van de oplossing.


In bijlage een voorbeeld van zo'n rangschikking.

Nu wordt dit allemaal handmatig gedaan, en duurt zeer lang.
 

Bijlagen

  • results-clubkampioenschap-jacht-2017.xlsx
    10,4 KB · Weergaven: 23
Door er een tabel van te maken is het sorteren geen werk.
 

Bijlagen

  • results-clubkampioenschap-jacht-2017.xlsx
    18,5 KB · Weergaven: 37
Ik heb nu in kolom R van totaal volgende gezet:
Code:
=if(C2="";"";sum(H3:Q3))

En hoe kan ik nu (zonder een tabel te gebruiken) de formules combineren, zodat er gerangschikt wordt?
Zodat nr1 bovenaan staat.

Code:
=IF(COUNTIF($H3:$Q3;"")=10;"";IF(COUNTIF($H3:$Q3;0)>0;"NC";if(or(r3="NC");"";rank(r3;r3:r50));SUM($H3:$Q3)))

=IF(OR(R3="";R3="NC");"";RANK(R3;R3:R50))
 
=if(C2="";"";sum(H3:Q3)) in C2 staat niets en in H3:Q3 staan namen hoe kan dit dan 10 opleveren.

Je kan niet met formules sorteren in dezelfde kolom als waar de gegevens staan.
Je kan enkel de gesorteerde tabel schrijven naar een nieuwe locatie.
 
Cobbe,

Wat ik wil bekomen is een formule die sorteert van 1 tem xxx (waarbij 1 bovenaan staat).

Heb geprobeerd Uw formules samen te voegen, maar krijg een foutmelding.
Niet op letten naar de cellen, want heb file aangepast.

Code:
=IF(COUNTIF($E3:$N3;"")=10;"";IF(COUNTIF($E3:$N3;0)>0;"NC";SUM($E3:$N3);rank(A3;$A$3:$A$50;0)))

Kort samen gevat:
1. Tel alle cellen op van E3 tem N3, dit is gewoon auto sum, dus geen info voor nodig
2. Controleer of er tussen E3 en N3 een nul staat
3. Indien Nul; dan is het resultaat in kolom plaats (A) NC
4. Bepaal wie er op plaats 1 staat aan de hand van de waarde in kolom Totaal (O) (dubbele krijgen ook rang 1 of 2 of ...)
5. Sorteer eerst op rangschikking van kolom Plaats van 1 tem xxx
6. Sorteer daarna op NC , hoogste punten naar laagste (aan de hand van waarde in kolom Totaal (O))
 
Voor de punten 1 tot 4 heb ik u de formules gegeven.
Voor 5 en 6 lukt dat niet via formules.
En om dat te programmeren in VBA is nutteloos werk doordat via een tabel dat zonder enig toevoegen wel lukt.
 
Een voorbeeldbestand met formules lijkt mij logischer. Mogelijk dat het te sorteren is met een macro. En ja nu net verkeerd om.

Code:
Sub VenA()
For Each ar In Sheets(1).UsedRange.SpecialCells(2).Areas
  j = j + 1
  If j Mod 5 = 0 Then ar.Sort ar.cells(1), 2, ar.cells(1, 13), , 2, , , xlNo
Next
End Sub
 
Ben tot volgende formule gekomen.
Dank aan Cobbe:

Code:
=IF(COUNTIF($E3:$N3;"")=10;"";IF(COUNTIF($E3:$N3;0)>0;"NC";RANK(O3;$O$3:$O$52;0)))

Nu nog de macro in orde krijgen voor sortering (is copy & paste + macro recorder) (zet nu de resultaten met NC geheel onderaan, zodat er veel lege regels tussen zitten).
En de resultaten met NC moeten na de laatste plaats komen te staan.

Code:
Dim LR As Long, cell As Range, rng As Range

    Range("A2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    With Sheets("Resultaten Initiatie")
    LR = .Range("A" & Rows.Count).End(xlUp).Row
    For Each cell In .Range("A2:O" & LR)
        If cell.Value <> "" Then
            If rng Is Nothing Then
                Set rng = cell
            Else
                Set rng = Union(rng, cell)
            End If
        End If
    Next cell
    rng.Select
End With
    
    ActiveWorkbook.Worksheets("Resultaten Initiatie").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Resultaten Initiatie").Sort.SortFields.Add Key:= _
        Range("A3:A52"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    
        
    ActiveWorkbook.Worksheets("Resultaten Initiatie").Sort.SortFields.Add Key:= _
        Range("O3:O52"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("Resultaten Initiatie").Sort
        .SetRange Range("A2:O52")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Heb met macro recorder, wat google, Helpmij.nl het volgende resultaat bekomen.
Ieder bedankt om mee te denken, en de aangeboden oplossingen.

Code:
Sub Sorteren()



Range("B3").Select
    ActiveCell.FormulaR1C1 = "=IF('Inschrijvingen Initiatie'!R[-1]C="""","""")"
    ActiveCell.FormulaR1C1 = _
        "=IF('Inschrijvingen Initiatie'!R[-1]C="""","""",'Inschrijvingen Initiatie'!R[-1]C[-1])"
    Range("B3").Select
    Selection.AutoFill Destination:=Range("B3:B52"), Type:=xlFillDefault
    Range("B3:B52").Select
    Range("C3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Inschrijvingen Initiatie'!R[-1]C[-1]="""","""",'Inschrijvingen Initiatie'!R[-1]C[-1])"
    Range("C3").Select
    Selection.AutoFill Destination:=Range("C3:C52"), Type:=xlFillDefault
    Range("C3:C52").Select
    Range("D3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Inschrijvingen Initiatie'!R[-1]C[-2]="""","""",'Inschrijvingen Initiatie'!R[-1]C[-1])"
    Range("D3").Select
    Selection.AutoFill Destination:=Range("D3:D52"), Type:=xlFillDefault
    Range("D3:D52").Select
    
Range("A3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(COUNTIF(RC5:RC14,"""")=10,"""",IF(COUNTIF(RC5:RC14,0)>0,""NC"",RANK(RC[14],R3C15:R52C15,0)))"
    Selection.AutoFill Destination:=Range("A3:A52"), Type:=xlFillDefault
    Range("A3:A52").Select


    ActiveWorkbook.Worksheets("Resultaten Initiatie").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Resultaten Initiatie").Sort.SortFields.Add Key:= _
        Range("A3:A52"), Sorton:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Resultaten Initiatie").Sort.SortFields.Add Key:= _
        Range("M3:M52"), Sorton:=xlSortOnValues, Order:=xlDescending, DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("Resultaten Initiatie").Sort
        .SetRange Range("A2:M52")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Selection.AutoFilter
    ActiveSheet.Range("$A$2:$M$52").AutoFilter Field:=3, Criteria1:="<>"
    Range("A1").Select
End Sub

Code:
Sub remove_filter()

    Range("B3:L52").Select
    Selection.ClearContents
    Sheets("Inschrijvingen Initiatie").Select
    Selection.ClearContents
    Sheets("Resultaten Initiatie").Select
    ActiveSheet.ShowAllData
    ActiveWorkbook.Worksheets("Resultaten Initiatie").AutoFilter.Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("Resultaten Initiatie").AutoFilter.Sort.SortFields. _
        Add Key:=Range("B2:B52"), Sorton:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Resultaten Initiatie").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A1").Select
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan