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

automatisch sorteren meerdere kolommen

Status
Niet open voor verdere reacties.

ronnie123

Gebruiker
Lid geworden
21 nov 2007
Berichten
595
Hallo beste mensen
ik gebruik deze code om automatisch te sorteren na enter

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then

        Range("A1:A1000").Sort Key1:=Range("A1"), _
            Order1:=xlAscending, Header:=xlYes
    End If
End Sub
deze is alleen voor kolom A, is dit ook uit te bereiden voor meerdere kolommen ( bv A t/m K )?
nu ben ik drukker met scrollen dan dat ik een nieuw getal invoer.
sortering van hoog naar laag
en de lees richting
van boven naar beneden
van links naar rechts
het gaat alleen om om heel veel getallen en geen tekst
bvd ronnie
 
Macrootje opnemen? Zonder werkblad een beetje lastig, dus als aanzetje:
Code:
Dim sht As Worksheet
    Set sht = ActiveWorkbook.Worksheets("Blad1")
    With sht.Sort
        With .SortFields
            .Add2 Key:=Range("A2:A1000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .Add2 Key:=Range("B2:B1000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .Add2 Key:=Range("C2:C1000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .Add2 Key:=Range("D2:D1000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        End With
        .SetRange Range("A1:E1000")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 
Hallo octafish
bedankt voor je reactie
heb een bestandje toe gevoegd nu met jou code
maar hij sorteert nog niet
kan jij kijken wat ik fout heb
bvd ronnie
gaat hier fout met opslaan zal het vanmiddag thuis even doen
 

Bijlagen

  • sorteren.xlsm
    11,1 KB · Weergaven: 46
Laatst bewerkt:
Wat wil je precies bereiken? De tweede kolom bevat zegge en schrijve twee unieke getallen, de eerste kolom alleen maar unieke getallen. Als ik de macro toepas op jouw bestandje, dan doet-ie het prima. Twee varianten getest, die het dus alletwee doen.
Code:
Sub Macro1()
Dim sht As Worksheet
    
    Set sht = ActiveWorkbook.Worksheets("Blad1")
    sht.Sort.SortFields.Clear
    With sht.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range("A2:A54"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add2 Key:=Range("B2:B54"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A2:B54")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    With sht.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range("A2:A54"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SortFields.Add2 Key:=Range("B2:B54"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A2:B54")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
 
gaat bij mij fout met opslaan van macro ( ga vanmiddag thuis even uitproberen )
in kolom B staan maar 2 doc.nr. worden er veel meer.
had dus nu 1 lange rij kolom A, wil daar meerdere korte rijen van maken zodat het wat overzichtelijker in beeld komt en uit geprint kan worden
grt ronnie
 
had dus nu 1 lange rij kolom A, wil daar meerdere korte rijen van maken zodat het wat overzichtelijker in beeld komt en uit geprint kan worden
Dan is een draaitabel in Tabelvorm toch veel handiger? Zet alle kolommen in het Rijenveld en kies bij <Rapportindeling> voor <Tabelweergave>. Eventueel kun je de kolommen nog herhalen of niet.
 

Bijlagen

  • Sorteren_of.xlsm
    81,8 KB · Weergaven: 39
octafish
kom er nog niet uit
als ik in E12 bv 145712 invul en dan op enter druk wil ik dat alles gesorteerd wordt
en 145712 dus in A2 komt
grt ronnie
 

Bijlagen

  • Map1.xlsm
    12,8 KB · Weergaven: 25
Wat wil je met deze onzinnige manier van gegevens invoeren? Is het aantal rijen beperkt? Is het aantal kolommen onbeperkt?
 
het zijn document nummers waar straks linken aan verbonden wordt
kolommen en rijen zijn onbeperkt
 
Dat geeft in ieder geval een boel duidelijkheid.:rolleyes:
 
Zoiets waarschijnlijk.

Trouwens niet erg slim om in A2 te beginnen.
Code:
Sub hsv()
Dim i As Long
With Cells(2, 1).CurrentRegion
   For i = 2 To .Rows.Count + 1
     Rows(i).Sort Cells(i, 1), 1, , , , , , xlNo, , , xlLeftToRight
   Next i
 .Sort Cells(2, 1), 1, , , , , , xlNo, , , xlSortColumns
End With
End Sub
 
zoiets voor een nader te bepalen aantal kolommen
 

Bijlagen

  • Sorteren_of.xlsm
    103,9 KB · Weergaven: 34
bedankt voor de reacties ga hier mee aan de gang
zet hem nog niet op opgelost
groetjes ronnie
 
voor de grap een combinatie van HSV en mezelf.
Het is me voorlopig nog eventjes niet gelukt in een tabel
er wordt eerst binnen de rij aflopend gesorteerd en daarna wordt op de kolommen gesorteerd van links naar rechts

1e macro vult het bereik met willekeurige waarden, de 2e macro sorteert, er is geen change-event meer
 

Bijlagen

  • Sorteren_of.xlsm
    146,7 KB · Weergaven: 26
Laatst bewerkt:
@Cow, ik was gister ook bezig met horizontaal sorteren binnen een tabel. Het lijkt er op dat het niet wordt toegelaten op een of andere manier...
Als alternatief heb ik de data ingelezen in een Collections.ArrayList, gesorteerd en teruggeschreven.
 
het is nochtans wel mogelijk, ik had het ergens tegen gekomen, maar vind het niet meer terug.
Bon, voorlopig niet van belang, TS gebruikte geen listobject.

Een collections.arraylist, dan heb je maar 1 sleutel, dat wordt een moeilijke workaround ?!?
 
Ik heb ze op regelniveau ingelezen en weer teruggeschreven
 
ach zo ! Dan kan het.
 
ik had het ergens tegen gekomen, maar vind het niet meer terug.

@Cow, misschien dat deze manier overeenkomt met hetgeen dat je ooit tegenkwam:d. Het tabelbereik horizontaal gesorteerd in een array:
 

Bijlagen

  • table sort.xlsm
    20 KB · Weergaven: 47
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan