• 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 vanuit curser positie

Status
Niet open voor verdere reacties.

Albatros

Gebruiker
Lid geworden
4 nov 2001
Berichten
388
Goedendag,

Middels onderstaande macro lukt het mij om een tabel te sorteren van hoog naar laag, in de kolom "meting 1"

Code:
Sub Sort_hoog()

    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Add Key:=Range("D5:D9"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Blad1").Sort
        .SetRange Range("C4:F9")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Middels een andere code kan ik weer sorteren van laag naar hoog. En dit vervolgens voor (in dit voorbeeld) voor alle metingen.
ipv 6 codes te schrijven, zou ik graag slechts 2 codes willen hebben (sorteren van hoog naar laag, en van laag naar hoog), en dat de macro dan kijkt in welke kopcel (meting 1, of meting 2 enz.) staat.
Het lukt mij niet om bv de "Add Key:=Range("D5:D9")" te vervangen door iets als "key:=RangeActiveCel"

Is wat ik wil mogelijk? de oorspronkelijke tabel heeft ca. 25 metingen.

Albatros
Bekijk bijlage Macro - sort op cel.xlsm
 
Bereik = split(activecell.address, "$")(0)
Bereik = Bereik & "5:" & Bereik & 9

Zet dit gelijk onder je Sub. Vervang het vaste adres door de variabele Bereik.
 
Klein beetje verkort zien de twee codes er zo uit.
Code:
Sub Sort_hoog()
   Range("c4:f9").Sort Cells(4, ActiveCell.Column), 2, , , , , , 1
End Sub


Sub Sort_laag()
 Range("c4:f9").Sort Cells(4, ActiveCell.Column), , , , , , , 1
End Sub
 
Laatst bewerkt:
Hoi,

Bedankt voor de reacties.
De oplossingen van Ginger en HSV, krijg ik niet onder de vleugels.
De oplossing van Cobbe werkt goed, alleen als er geen getallen in de rij staan, wordt dit niet als “0” gezien, maar hier valt mee te leven.

Albatros
 
Dat gaan ze niet laten passeren. :)
 
@Cobbe, :d

@Albatros,

Als je weet welk bereik je wilt sorteren weet je de startrij.
Code:
Range("c[COLOR=#ff0000]4[/COLOR]:f9").Sort Cells([COLOR=#ff0000]4[/COLOR], ActiveCell.Column), 2, , , , , , 1
De startrij is hier 4 van je bereik.
Als de startrij 2 is lijkt me dat niet zo moeilijk.
Code:
Range("c[COLOR=#ff0000]2[/COLOR]:f9").Sort Cells([COLOR=#ff0000]2[/COLOR], ActiveCell.Column), 2, , , , , , 1
 
Challenge Accepted! :cool:

Bij nader inzien werkt de code van HSV perfect. :thumb:
Ik dacht dat er nog van alles ingevuld moest worden bij
Code:
 2, , , , , , 1
Niet dat ik dit stukje begrijp, maar het werkt wel.
Nu nog even omzetten naar mijn "echte" database.
Bedankt voor het meedenken, en de aangeboden oplossingen! :thumb::thumb:

Albatros
 
De oplossingen van Ginger en HSV, krijg ik niet onder de vleugels

Sorry, mijn fout... Ik reageerde ff via mijn tablet. De nul in de "split" had een 1 moeten zijn om de kolomletter te pakken te krijgen. Probeer dit testblokje maar 'ns uit...
Code:
Sub Test()
    
    Bereik = Split(ActiveCell.Address, "$")(1)
    Bereik = Bereik & "5:" & Bereik & 9
    MsgBox "dit is het bereik van de actieve cel: " & Bereik
    
End Sub
Waarschijnlijk begrijp je dan wel waar ik naartoe wilde met mijn oplossing. ;)
 
Challenge Accepted v2.0

Ginger, fijn dat je hier nog even op terug komt.
Heb de code aangepast, en zie dat dit ook een goede oplossing is.
Bedankt voor de uitleg. (Kan ik mijn vleugels weer uitslaan :) )

Albatros
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan