2 kolommen sorteren

Status
Niet open voor verdere reacties.

Tweety1

Gebruiker
Lid geworden
6 mrt 2013
Berichten
637
Ik gebruik volgende macro op 2 kolommen te sorteren alleen werkt het niet zoals ik wil.
Wat ik graag wil is dat hij eerst soort op kolom Q (datum veld) en daarna op Kolom B

Code:
Sub SortRange2()
   Worksheets("Sheet1").Range("Q1").Sort _
        Key1:=Worksheets("Sheet1").Columns("Q"), _
        Header:=xlGuess
   Worksheets("Sheet1").Range("B1").Sort _
        Key1:=Worksheets("Sheet1").Columns("B"), _
        Header:=xlGuess
End Sub

Volgende macro heb ik opgenomen alleen de range veranderd steeds.

Code:
Sub Macro1()
    ActiveWorkbook.Worksheets("sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("sheet1").Sort.SortFields.Add Key:=Range("Q2:Q4857" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("sheet1").Sort.SortFields.Add Key:=Range("B2:B4857" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("sheet1").Sort
        .SetRange Range("A1:U4857")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

mvg

Kasper
 
En wat is nu de vraag?

In je eerste voorbeeld sorteer je eerst op "Q" en dan op "B". Het resultaat zal zijn dat er alleen op "B" gesorteerd wordt. Wat je kunt zien in de tweede macro is dat er eerst verteld wordt op welke velden gesorteerd dient te worden en dan vervolgens eenmalig een sort commando wordt uitgevoerd op 2 velden.

Indien je je eerste macro om wil schrijven moet je key1 en key2 toevoegen in een enkele lijn.
 
Bedankt voor de uitleg ik heb opgelost door het volgende macro te gebruiken

Code:
Sub SortRange2()
   Worksheets("Sheet1").Range("Q1").Sort _
        Key1:=Worksheets("Sheet1").Columns("Q"), _
        Key2:=Worksheets("Sheet1").Columns("B"), _
        Header:=xlGuess
End Sub
 
Wat werkt er niet?

In principe zou dit:
Code:
Worksheets("Sheet1").usedrange.Sort key1:=[q1], key2:=[b1]

het resultaat moeten geven. (afhankelijk of je nou met headers werkt of niet)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan