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

Vraag je over sorteren

Status
Niet open voor verdere reacties.

matthiej88

Gebruiker
Lid geworden
21 jan 2010
Berichten
85
Hallo mensen!

Ik wil in een excelblad gegevens sorteren op alfabetische volgorde. Hij moet sorteren op de gegevens in kolom B.

In kolom B staan de hoofdpunten, en in Kolom C de punten die daaronder vallen. Echter, als in kolom C iets staat, staat in kolom B niets. Bij het sorteren op kolom B zet hij daarom alle rijen met een waarde in kolom B op alfabetische volgorde en de rest van de waarden staan daar onder.

Het voorbeeld in de bijlage zal wat duidelijkheid scheppen denk ik :)

De vraag is dus, hoe zorg ik dat hij dit op een goede manier sorteert.
 

Bijlagen

Bedankt voor de tip, maar dit werkt niet in mijn geval.. Daarnaast is het ook een hele lange lijst (250 rijen o.i.d.), dus 't moet iets zijn dat niet handmatig ingevoerd moet worden als het even kan..
 
Helaas ontkom ik niet aan handhandelingen. In kolom B de cijfers doorgetrokken en deze met VO wit gemaakt. Maar sortering levert dan een leeg vak aan de onderkant van de cijferreeks op, zie voorbeeld.
 

Bijlagen

  • Voorbeeld sorteren helpmij.xlsx 6-10-2011 161623.jpg
    Voorbeeld sorteren helpmij.xlsx 6-10-2011 161623.jpg
    31 KB · Weergaven: 48
Laatst bewerkt:
Met VBA is de sortering makkelijk aan te passen.

Code:
Sub Sorteren()
Dim lRij As Long
    lRij = 2
    While lRij < Range("C" & Rows.Count).End(xlUp).Row
        Range("B" & lRij & ":B" & Range("C" & lRij + 1).End(xlDown).Row) = Range("B" & lRij)
        lRij = Range("B2").End(xlDown).Row
    Wend
    With Range("B2:C" & lRij)
        .Sort key1:=Range("B2")
        .AutoFilter 2, "<>"
        Range("B3:B" & lRij).SpecialCells(xlCellTypeVisible).ClearContents
        .AutoFilter
    End With
End Sub

In bijgevoegd bestand moet je de macro nog even draaien.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Laatst bewerkt:
een hele mooie code Roncancio:thumb:

ik heb hem een klein beetje aangepast: zo sorteert hij ook de C_kolom

Code:
Sub Sorteren2()
Dim lRij As Long
    lRij = 2
    While lRij < Range("C" & Rows.Count).End(xlUp).Row
        Range("B" & lRij & ":B" & Range("C" & lRij + 1).End(xlDown).Row) = Range("B" & lRij)
        lRij = Range("B2").End(xlDown).Row
    Wend
    With Range("B2:C" & lRij)
        .Sort key1:=Range("B2"), key2:=Range("C2")
        Range("C2").Insert Shift:=xlDown
        .AutoFilter 2, "<>"
        Range("B3:B" & lRij).SpecialCells(xlCellTypeVisible).ClearContents
        .AutoFilter
    End With
End Sub
groet sylvester
 
Hee mensen, bedankt voor jullie input!

Op het voorbeeldje werkt hij helemaal perfect. Als ik hem echter op het originele bestand draai, gaat er toch iets mis.

de gegevens hoeven pas gesorteerd te worden vanaf rij 5. Ik heb de macro daarom aangepast zoals onderstaand weergegeven:

Sub Sorteren2()
Dim lRij As Long
lRij = 5
While lRij < Range("C" & Rows.Count).End(xlUp).Row
Range("B" & lRij & ":B" & Range("C" & lRij + 1).End(xlDown).Row) = Range("B" & lRij)
lRij = Range("B5").End(xlDown).Row
Wend
With Range("B2:C" & lRij)
.Sort key1:=Range("B5"), key2:=Range("C5")
Range("C5").Insert Shift:=xlDown
.AutoFilter 2, "<>"
Range("B6:B" & lRij).SpecialCells(xlCellTypeVisible).ClearContents
.AutoFilter
End With
End Sub

Als ik dan de macro draai, geeft hij foutmelding 400.

Heb al een aantal dingen geprobeerd, maar kom er nog niet uit helaas..

Ik weet niet of het er toe doet, maar in de tabel zitten verborgen rijen.
 
probeer deze eens (hij sorteert alleen op de eerste kolom)
als je wilt dat hij ook op de volgende kolom sorteert, laat dat dan hier weten.

als je de tabel verplaatst, moet je de variabele "BeginTabel" wijzigen. hij staat nu op [B5]

groet sylvester

Code:
Sub Sorteren()
    Dim lRij As Long, BeginTabel As Range
    Set BeginTabel = [B5]
    lRij = BeginTabel.Row
    While lRij < Cells(Rows.Count, BeginTabel.Column + 1).End(xlUp).Row
        Range(Cells(lRij, BeginTabel.Column), Cells(Cells(lRij, BeginTabel.Column + 1).End(xlDown).Row, BeginTabel.Column)) = Cells(lRij, BeginTabel.Column)
        lRij = BeginTabel.End(xlDown).Row
    Wend
    With Range(BeginTabel, Cells(lRij, BeginTabel.Column + 1))
        .Sort key1:=BeginTabel
        .AutoFilter 2, "<>"
        Range(BeginTabel(2, 1), Cells(lRij, BeginTabel.Column)).ClearContents
        .AutoFilter
    End With
End Sub
 
Laatst bewerkt:
Hallo mensen,

Opzich werkt deze macro nog niet helemaal zoals ik zou willen, maar ik heb het inmiddels anders aangepakt.

Toch bedankt!
 
jammer dat je niet verteld hoe je het hebt opgelost
en jammer dat je niet verteld wat de macro niet doet wat hij wel had moeten doen

ik ben zeer benieuwd

groet sylvester
 
Ik heb het via een andere benadering opgelost, waarbij ik van te voren al op alfabetische volgorde gesorteerd heb. Daarna met rijen verbergen gewerkt in plaats van het invoegen van rijen..

Het probleem met het sorteren staat goed uitgelegd in mijn eerste voorbeeld. De macro's hebben dat probleem nog niet opgelost, zoals hierboven beschreven. Uiteindelijk kostte het me meer moeite om de macro aan te passen dan het op bovenstaande manier op te lossen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan