• 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

Status
Niet open voor verdere reacties.

sjoerd81

Gebruiker
Lid geworden
24 jul 2009
Berichten
161
Bekijk bijlage filter kopieren.xlsHallo,

In het tabblad SAP heb ik een export. Deze wil ik graag sorteren op kolom E. Het eindresultaat staat in sheet 3. Echter is dit handmatig gegaan (kopie/past). Is hier niet een handigere manier voor? VBA eventueel?

Sjoerd
 
Dit kun je opnemen met de macrorecorder. Aanzetten en vervolgens de handelingen handmatig uitvoeren; weer uitzetten en je kunt de macro draaien.
 
Met de macrorecorder opnemen is niet de oplossing omdat het aantal rijen variabel is.

Sjoerd
 
De opgenomen macro moet je natuurlijk een beetje aanpassen. In je macro zal je iets zien staan in de zin van
Range("A1:E50").Select.
Dit zou je kunnen vervangen door bijvvorbeeld Rang("A1").CurrentRegion.selelct
 
Vooraf markeren en dan
Code:
Sub sorteer()

If MsgBox("Je wilt sorteren. Zijn er rijen gemarkeerd? ", vbYesNo, "Rijen markeren!") = vbYes Then
        
Application.ScreenUpdating = False
    
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
        , Order2:=xlAscending, Key3:=Range("C2"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
        xlSortNormal
    Range("A10").Select
    ActiveWorkbook.Save

Else
MsgBox ("Er wordt niet gesorteerd")
End If

Application.ScreenUpdating = True
End Sub
 
Waarom zo ingewikkeld?

Volgens mij volstaat :

Code:
Sub Sorteren()
ActiveSheet.UsedRange.Sort key1:=Range("E2"), Header:=xlYes
End Sub

Met vriendelijke groet,


Roncancio
 
Waarom zo ingewikkeld?
Roncancio,

Het is een code, die ik gebruik bij een groter bestand, waarin de laatste regels niet altijd op datumvolgorde zijn, en die ik op die manier sorteer. Ik heb hem doorgegegeven met de wetenschap dat het ook anders kan. ;)
 
Roncancio,

Het is een code, die ik gebruik bij een groter bestand, waarin de laatste regels niet altijd op datumvolgorde zijn, en die ik op die manier sorteer. Ik heb hem doorgegegeven met de wetenschap dat het ook anders kan. ;)

Er is niets mis mee met het hergebruiken van reeds bestaande code maar het is beter om de gebruiker niet (of zo weinig mogelijk) lastig te vallen met vragen.
Verder is het beter om Select en Selection te vermijden.

Met vriendelijke groet,


Roncancio
 
Roncancio, de code werkt super, thanks! Wat wellicht niet duidelijk in de vraagstelling naar voren gekomen is dat ik het resultaat in sheet 3 wil terugzien en de originele data onveranderd dient te blijven in het tabblad SAP. Is dit ook nog mogelijk?

Sjoerd
 
Code:
Sub Sorteren()
Dim lAR As Long
    lAR = Worksheets(1).UsedRange.Rows.Count
    Worksheets(3).Range("A1:J" & lAR).Value = Worksheets("SAP").Range("A1:J" & lAR).Value
    Worksheets(3).UsedRange.Sort key1:=Range("E2"), Header:=xlYes
End Sub

Met bovenstaande code worden de gegevens van het werkblad SAP in het 3e werkblad geplaatst.
Vervolgens wordt het 3e werkblad gesorteerd obv de E-kolom.

Met vriendelijke groet,


Roncancio
 
De gegevens worden wel gekopieerd alleen niet gesorteerd. Ik krijg de volgende foutmelding:

Run-time error '1004':
The sort reference is not valid. Make sure that it's within the data you want to sort, and the first Sort By box isn't the same or blank.

Sjoerd
 
Zo lukt het beter:
Code:
Sub Sorteren()
Dim lAR As Long
    lAR = Worksheets(1).UsedRange.Rows.Count
    With Worksheets(3)
        .Cells.Clear
        .Range("A1:J" & lAR).Value = Worksheets("SAP").Range("A1:J" & lAR).Value
        .Range("A1:J" & lAR).Sort key1:=.Range("E2"), Header:=xlYes
    End With
End Sub

Met vriendelijke groet,


Roncancio
 
Dit ziet er heel mooi uit. Het gewenst resultaat, gemakshalve eventjes in sheet 2 gezet, wijkt nog af op de volgende punten:

- de layout; - de dikgedrukte regels van de totalen worden niet mee overgenomen
- de borders worden niet mee overgenomen
- is het mogelijk om naar ieder (sub)totaal een lege regel te creeeren?

- is het mogelijk om de SUMIF formule mee over te nemem in de (sub)totalen?

Sjoerd
 

Bijlagen

  • sorterentest.xls
    75 KB · Weergaven: 29
Ik heb de code aangepast zodat de gegevens nu wel goed worden weergegeven.

Met vriendelijke groet,


Roncancio
 

Bijlagen

  • sorterentest-1.xls
    82,5 KB · Weergaven: 31
Het eindresultaat is nabij :)

Ik krijg de volgende melding:

Run-time error '1004':
Unable to set the Color property of the Border class
 
Het eindresultaat is nabij :)

Ik krijg de volgende melding:

Run-time error '1004':
Unable to set the Color property of the Border class

Hm, ik kreeg geen melding.
Hoe dan ook, ik heb de code aangepast.

Met vriendelijke groet,


Roncancio
 

Bijlagen

  • sorterentest-1.xls
    83 KB · Weergaven: 17
Ik krijg nog steeds dezelfde melding... Waar kan dit aan liggen?

Sjoerd
 

Bijlagen

  • sorterentest-1(1).xls
    91 KB · Weergaven: 18
Nee helaas niet. Op een andere pc werkt het ook niet/ loopt het vast.

Sjoerd
 
Nee helaas niet. Op een andere pc werkt het ook niet/ loopt het vast.

Sjoerd

Hm, dan doen we het iets anders.
Kan je een macro laten lopen en cellenbereik omlijnen.
Vervolgens laat je deze macro een keer draaien om te zien of het zo goed gaat.
Als dat zo is plaats je die macrocode hier zodat ik het in de code kan verwerken.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan