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

fwalraven

Gebruiker
Lid geworden
30 apr 2006
Berichten
176
Hallo,

Is het mogelijk een aantal blokken bestaande uit een verschillend aantal rijen, onderbroken door een lege rij, te sorteren op alfabetische volgorde? Als eerste kolom A en dan kolom B.
Bv. zoals in de bijlage, behoort dan het blok beginnende bij regel 77 bovenaan te komen.

Frans
 

Bijlagen

Misschien een hele stomme vraag maar waarom dient er op div. plaatsen een lege rij te staan?
Lege rijen geven in de meeste gevallen alleen maar problemen.
 
Is het toeval dat de vijf blokken uit je voorbeeld een verschillend aantal rijen tellen (36, 37, 38, 37, 38)?
En ik neem aan dat je niet 77 maar 76 bedoelt. Mijns inziens kan dit alleen met een macro.
 
Misschien een hele stomme vraag maar waarom dient er op div. plaatsen een lege rij te staan?
Lege rijen geven in de meeste gevallen alleen maar problemen.
Blokken zijn afkomstig middels OCR software van JPG bestanden welke een nummer hebben.
Aangezien die software niet 100% zal werken wil ik die blokken ook een nummer geven, corresponderend met het JPG bestand. Zodat ik bij eventuele fouten direct het bijbehorende JPG bestand terug kan vinden.
De lege regel zit er tussen omdat als het ene blok eindigt op een tiental Janssen, Joannes en het volgende blok begint met de nodige Janssen Joannes, bij alfabetisch sortering de Janssen, Joannes door elkaar gaat zetten. De blokken corresponderen dan niet meer met het JPG bestand.
Vandaar die lege rijen als scheiding.
 
Is het toeval dat de vijf blokken uit je voorbeeld een verschillend aantal rijen tellen (36, 37, 38, 37, 38)?
En ik neem aan dat je niet 77 maar 76 bedoelt. Mijns inziens kan dit alleen met een macro.
Met een macro was ook de bedoeling. De blokken zijn nooit het hetzelfde. De meesten zijn ongeveer tussen de 35 en 40 regels. Een enkeling bestaat uit slechts een vijftal regels.
 
Probeer het hier eens mee:
Ahulpje, in jouw voorbeeld werkt het goed.

Maar als ik de macro naar mijn werkblad kopieer dan ik ik al bij de eerste regel in de macro een foutmelding.
Deze is: Compileerfout, Een variabale is niet gedefineerd.
Code:
 a = Sheets("blad1").UsedRange()

Betreft Excel 2016.
 
Vervang in de macro Blad1 door de naam van het werkblad met je gegevens of hernoem het werkblad met je gegevens naar Blad1. Zorg er ook voor dat de werkbladen Sorteer en Gesorteerd bestaan.
En heb je Option Explicit bovenaan je code staan, verwijder die dan of declareer alle gebruikte variabelen:
Code:
    Dim a
    Dim r    As Long
    Dim i    As Long
    Dim j    As Long
    Dim blok As Long
    Dim van  As Long
    Dim tot  As Long
    Dim k    As Long
 
Laatst bewerkt:
AHulpje,
Na verwijderen Option Explicit is de fout melding weg.

Ik heb nu een werkblad van 10 blokken bijgevoegd.
10 blokken zal het maximale zijn.

Echter het 3e en 4e blok hadden omgewisseld moeten worden.
Zie rode tekst.
De overige 8 staat wel in de juiste volgorde.
 

Bijlagen

Zoals je in het werkblad 'Sorteer' kunt zien zijn de blokken netjes gesorteerd op achtereenvolgens kolom A en kolom B en dat is dus ook de volgorde van de blokken op het werkblad 'Gesorteerd'. De punt in 'R.P.' komt nu eenmaal vóór de o in 'Rolandus'. En zolang het aantal blokken niet veel groter dan 30.000 wordt hoef je je geen zorgen te maken.
 
Zoals je in het werkblad 'Sorteer' kunt zien zijn de blokken netjes gesorteerd op achtereenvolgens kolom A en kolom B en dat is dus ook de volgorde van de blokken op het werkblad 'Gesorteerd'. De punt in 'R.P.' komt nu eenmaal vóór de o in 'Rolandus'. En zolang het aantal blokken niet veel groter dan 30.000 wordt hoef je je geen zorgen te maken.
Ik zie dat punten, komma,s, spaties, etc inderdaad voorgaan op de letters van het alfabet.
Zet ik in de 1e rij van dat blok RP in plaats van R.P. dan staat alles wel goed.
Zijn deze leestekens dan nog uit te sluiten?

Frans
 
Met behulp van een extra kolom met deze formule lukt het ook
PHP:
=IF(F2="";"";G1)

Daarna deze kolom kopieren en plakken speciaal waarden.
Dan kun je op deze kolom sorteren en daarna op kolom A en B en C
 

Bijlagen

Vervang
Code:
.Cells(r, 2) = a(i + 1, 2)
door
Code:
.Cells(r, 2) = Replace(a(i + 1, 2), ".", "") 'Verwijder eventuele punten
In de gesorteerde data blijven de punten gewoon staan.
 
@popipipo
Het is de bedoeling dat hele blokken gesorteerd worden op basis van de eerste rij van het blok, binnen het blok hoeft dus niet gesorteerd te worden.
 
Terug
Bovenaan Onderaan