• 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 streepje in de waarden

Status
Niet open voor verdere reacties.

Snulk

Gebruiker
Lid geworden
12 mrt 2005
Berichten
429
Hallo,
Ik probeer een macro te maken die aflopend sorteert.
Nu staan er in de cellen de volgende waarden:
60%
100%
85%
-

bedoeling is dat als eerste 100% komt en aan het eind pas het streepje..
Bij mij gaat het fout omdat het streepje boevenaan komt.

Hoe kan dat?

groeten,
Jos
 
Kijk bij sorteeropties naar aangepast sorteren. Kies sorteren op waarde. Bij volgorde aangepaste lijst. Zet hier je streepje in. Dan moet het lukken.
 
Laatst bewerkt:
Neem het streepje niet mee in het sorteerbereik.
 
Kijk bij sorteeropties naar aangepast sorteren. Kies sorteren op waarde. Bij volgorde aangepaste lijst. Zet hier je streepje in. Dan moet het lukken.

In die cellen kunnen ook nog een groot aantal andere waarden staan. Dit was slechts een voorbeeld. Ik weet hoe ik aangepaste lijst kan maken, maar weet niet welke percentages in het rapport komen.
Dus dit is denk ik geen optie..
Nog ander idee?

Jos
 
Probeer het eens met onderstaande code
Code:
Sub sorteren()
'
' sorteren Macro
'

'
  Range("A6:A100").Select
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Add Key:=Range("A6:A100"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, CustomOrder:="-", DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("Blad1").Sort
        .SetRange Range("A6:A100")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A6").Select
End Sub
 
Laatst bewerkt:
Probeer het eens met onderstaande code
Code:
Sub sorteren()
'
' sorteren Macro
'

'
  Range("A6:A100").Select
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Add Key:=Range("A6:A100"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, CustomOrder:="-", DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("Blad1").Sort
        .SetRange Range("A6:A100")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A6").Select
End Sub

Die aangepaste lijst moet daar alleen een streepje in.. of hoe moet ik die maken?
 
Hoe bedoel je dat?
Er kunnen honderden percentages in de range staan met streepjes er tussen..
Omdat je toch in VBA bezig bent kan je ook voor of na het sorteren de streepjes verwijderen of onderaan zetten.
 
Een andere suggestie: wijzig de streepjes in nullen en pas een aangepast nummerformaat toe zodat de nullen als een streepje worden weergegeven:
0%;-0%;-;@
 
Beste mensen,

dank voor al jullie reacties.
helaas zit de oplossing er nog niet bij.

het bestand is niet van mezelf, maar van een kennis van mij. Streepjes vervangen door iets anders is niet aan de orde, dat mag gewoon niet.
Bijgaand een bestandje met voorbeeld. Op kolom A wordt eerst van A-Z gesorteerd, daarna op kolom E. Bij VOB Bauablauf zie je dat eerst het streepje komt en dan 80%
Het gaat er dus om dat het streepje als laagste waarde wordt gezien ipv de hoogste, zoals nu het geval is.

Zou geweldig zijn als ik een oplossing heb. (Liever geen ingewikkelde VBA oplossing :))

Jos
 
Waarom zweeft het allemaal in jouw werkblad. Begin gewoon in A1. Zet een kolom achter jouw 'tabel' die bepaalt of iets tekst of een getal is en dan kan je vrij eenvoudig sorteren.
 

Bijlagen

Laatst bewerkt:
Met een ingewikkelde VBA-oplossing:
Code:
Sub tsh()
    Columns(6).SpecialCells(2, 2) = -1
    Cells(3, 2).CurrentRegion.Sort [B3], xlAscending, [F3], , xlDescending, , , xlNo
    Range("F" & Join(Filter([transpose(if(F3:F300=-1,row(3:300),"~"))], "~", False), ",F")) = "-"
End Sub
 
Laatst bewerkt:
Iets minder ingewikkeld?

Gewoon beginnen in A1 met je tabel.
Code:
Sub hsv()
Dim rw
With Cells(1)
  .CurrentRegion.Sort [e1], 1
    rw = Application.Match("-", Columns(5), 0)
    rw = IIf(rw > 0, rw - 1, Cells(Rows.Count, 1).End(xlUp).Row)
  .Resize(rw, 7).Sort [a1]
  .Resize(rw, 7).Sort [e1], 2
End With
End Sub
 
Nog iets minder ingewikkeld?

Code:
Sub VenA()
With Cells(1)
  .CurrentRegion.Sort [E1], 1
  .Resize(Columns(5).SpecialCells(2, 1).Count, 7).Sort [E1], 2, [A1]
End With
End Sub
 
Iets uitgebreider; voor de streepjes.
Code:
Sub hsv()
Dim c As Range
 With Cells(1)
   .CurrentRegion.Sort [E1], 1
  Set c = .Resize(Columns(5).SpecialCells(2, 1).Count, 7)
   With c
     .Sort [E1], 2, [A1]
     .Offset(c.Rows.Count).Sort Cells(c.Rows.Count + 1, 1), 1
   End With
 End With
End Sub
 
Om het weer iets complexer te maken: (just for fun):d

Code:
Sub VenA()
With Cells(1)
  .CurrentRegion.Sort [E1], 1
  .Resize(Columns(5).SpecialCells(2, 1).Count, 7).Sort [E1], 2, [A1]
  .Offset(Columns(5).SpecialCells(2, 1).Count).Resize(Columns(5).SpecialCells(2, 2).Count, 7).Sort Cells(Columns(5).SpecialCells(2, 1).Count + 1, 1), 1
End With
End Sub
 
Haha, leuk om te zien.

Zo had ik het eerst ook, maar ik zag dat het bijna niet meer op het scherm paste. :P
 
Code:
Offset(Columns(5).SpecialCells(2, 1).Count).Resize(Columns(5) _
  .SpecialCells(2, 2).Count, 7).Sort Cells(Columns(5).SpecialCells(2, 1) _
  .Count + 1, 1), 1

Past hopelijk wel op jouw scherm:p

Wel bijzonder de TS heeft de reacties wel bekeken, maar er niet op gereageerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan