• 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 gaat niet goed na formule kolom B

Status
Niet open voor verdere reacties.

corvdh

Gebruiker
Lid geworden
29 aug 2010
Berichten
128
Ik heb een werkblad met gegevens die ik wil sorteren maar door een formule in kolom B werkt het sorteren niet goed.
Het gaat om deze formule: =GEMIDDELDE(C4:I4), indien er bijvoorbeeld op rij 4 en 5 in kolommen C t/m I niets ingevuld is geeft dit in cel B4 en B5 de waarde #DEEL/0!

Nu heb ik met voorwaardelijke opmaak er voor gezorgd dat de letterkleur in kolom B pas blauw word als de waarde hoger is dan 1, staat er dus #DEEL/0! In de cel dan blijft de letterkleur het zelfde als de cel opvulkleur.

Als ik de lijst op kolom B wil sorteren van hoog naar laag komen de cellen met #DEEL/0! altijd bovenaan te staan als op die regels in kolom C t/m I geen waardes zijn ingevuld.
Sorteer ik kolom B van laag naar hoog dan staat #DEEL/0! Altijd onderaan en dat is dan niet erg.

Het mooiste zou zijn dat cellen met #DEEL/0! Altijd onderaan komen te staan na het sorteren, of de formule zo aangepast kan worden dat de cel altijd leeg blijft (in plaats van #DEEL/0!) als er in de kolommen C t/m I niets is ingevuld.

Heeft iemand een idee hoe dit op te lossen?
 
Voor Excel 2007 of hoger.
Code:
=ALS.FOUT(GEMIDDELDE(C4:I4);"")
Voor Excel 2003:
Code:
=ALS(ISFOUT(GEMIDDELDE(C4:I4));"";GEMIDDELDE(C4:I4))
of:
Code:
=ALS(AANTAL(C4:I4)<1;"";GEMIDDELDE(C4:I4))
 
Laatst bewerkt:
Ik heb de onderste code in de cel ingevoerd en #DEEL/0! is nu verdwenen.
Tot zover goed.
Maar het sorteren gaat nog steeds niet goed, de lege cellen komen boven aan te staan en de cellen met waarden staan dan gesorteerd van hoog naar laag onder aan de lijst.

Wat ik wil is de cellen met waarden van hoog naar laag gesorteerd boven aan de lijst en de lege cellen daar onder.

Hoe krijg ik dit goed?
 
Maak eens van:
Code:
=ALS(AANTAL(C4:I4)<1;"";GEMIDDELDE(C4:I4))
dit:
Code:
=ALS(AANTAL(C4:I4)<1;[COLOR="#FF0000"]0[/COLOR];GEMIDDELDE(C4:I4))
 
Ik heb de formule aangepast en het werkt.
Bedankt voor je antwoord.
 
Ik kom er nu net achter dat als ik sorteer van laag naar hoog dan de lege cellen bovenaan komen te staan en de gesorteerde cellen helemaal onder.

het probleem is dus voor een deel wel opgelost dankzij die formule.
Leuk zou zijn als ik zowel van hoog naar laag als van laag naar hoog kon sorteren en bij beide volgordes de lege cellen onderaan komen te staan en de gesorteerde cellen boven.
Als dit lukt dan is het helemaal perfect.

Enig idee?
 
Laatst bewerkt:
Zie laatste reactie van mij hier boven.

Ik heb daarom de status van mijn vraag aangepast naar Niet opgelost.
 
Dat gaat niet lukken: als ze binnen het te sorteren bereik vallen staan ze onder óf boven afhankelijk van de sorteermethode.
 
Ik heb de oplossing voor mijn probleem gevonden door twee macro's te maken.
Ik heb onderandere ook gebruik gemaakt van de macro recorder om delen van de macro code te genereren.
Bij elke sorteer volgorde staan nu de lege cellen of die met een waarde 0 onderaan.

Code:
 Sub Sorteren_kolom_B_hoog_naar_laag()


Range("B2").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNT(RC[1]:RC[7])<1,0,AVERAGE(RC[1]:RC[7]))"
    Selection.AutoFill Destination:=Range("B2:B275"), Type:=xlFillCopy
    Range("B2:B275").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0.499984740745262
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0.499984740745262
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("A1").Select

    
      Range("A1:AW275").Select
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("B2:B275"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=Range("A2:A275"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("A1:AW275")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   Range("A1").Select
   
   End Sub


   Sub Sorteren_kolom_B_laag_naar_hoog()


    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNT(RC[1]:RC[7])<1,"""",AVERAGE(RC[1]:RC[7]))"
    Range("B2").Select
    Selection.AutoFill Destination:=Range("B2:B275"), Type:=xlFillCopy
    Range("B2:B275").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0.499984740745262
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ThemeColor = 2
        .TintAndShade = 0.499984740745262
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("A1").Select


    Range("A1:AW275").Select
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("B2:B275"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=Range("A2:A275"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("A1:AW275")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   Range("A1").Select
   
   End Sub
Nu is mijn vraag dus echt opgelost
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan