Nummeriek sorteren

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Beste allen,

Wie kan mij uitleggen waarom bij sorteren ( CurrentRegion.Sort ), M4x 8 onder de M4x 10, M4 x 16, M4x 20 etc. wordt geplaatst.

Zodra ik M4x 8 wijzig in M4x 08 dan staat deze weer wel bovenaan. Dit geldt ook als ik de M4x weghaal en enkel het cijfer 8 plaats.

Code:
 Sub sorteren()
    
    With Sheets("Blad2")
        .Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 6). _
            Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        
        .Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 6) _
            = Array(Combo_Zoek, Combo_Keuze, Combo_Merk, Combo_Type, Combo_Optie, Combo_Optie2)
                
[B]        .Cells(1).CurrentRegion.Sort .[G2], , .[H2], , , , , xlYes
        .Cells(1).CurrentRegion.Sort .[D2], , .[E2], , , .[F2], , xlYes
        .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , xlYes    [/B]
    End With
End Sub

Alvast bedankt
 
Laatst bewerkt:
Wat ik met bovenstaande code eerst doe, is eerst iets invoeren en daarna alle kollommen sorteren. Daar ik meerdere kollommen heb om te sorteren en ik middels de .Sort maar 3 Keys kan ingeven, gebruik ik meedere .Sort. Op deze wijze staat alles in alle kollommen perfect op alfanumerieke volgorde.

Ik gebruik bewust de comboboxen zodat het mij invoer werk bespaart. Ik kan meteen uit de bestaande lijst iets selecteren en indien nodig aanpassen.

Ik loop nu enkel tegen bovenstaand probleempje op. Welke overigens makkelijk is op te lossen middels 08. Echter vind ik dit niet netjes.

Edit:
Voor ik het vergeet. Hoe zat het ook al weer om de code verkort op te schrijven zonder al die komma's. Het was iets met .Key1=.......
 
Laatst bewerkt:
Voor het werken zonder komma's, was het dacht ik:

Code:
        .Cells(1).CurrentRegion.Sort key1:=.[G2], key2:=.[H2], Header:=xlYes
        .Cells(1).CurrentRegion.Sort key1:=.[D2], key2:=.[E2], key3:=.[F2], Header:=xlYes
        .Cells(1).CurrentRegion.Sort key1:=.[A2], key2:=.[B2], key3:=.[C2], Header:=xlYes

Als dit niet klopt, hoor ik het graag. (Heb het wel uitgeprobeerd en het lijkt te werken.)

Bedankt.
 
Wel een mooi monoloog. Wat is de vraag? Dat 100 in een tekst range boven 80 komt te staan? 1 is kleiner dan 8 dus....
 
Leek mij eerlijk gezegd wel duidelijk, dacht ik zo.

Ja zo zou je het denk ik wel kunnen omschrijven.

Nu is alles tekst. De uitkomst moet gewoon worden: M4x 8, M4x 10, M4x 12.
Dus niet: M4x 10, M4x 12, M4x 8.

Uiteraard is gaat het nog verder, maar dit is een gedeelte.
Het gaat dus indien van toepassing puur om het numerieke. Houd daarbij wel rekening met dat er in dezelfde kolom ook nog andere zaken in tekst staan die ook op volgorde moeten blijven staan.

Het is een materiaallijst en deze is opgedeeld in meerdere categorieën in meerdere kollommen. Zo heb ik in Kolom A bijvoorbeeld: Installatiemateriaal, Montagemateriaal, Draad en Kabel etc. In andere kollommen is het feitelijk precies eender. Echter daar staan weer categorieën in welke weer te maken hebben met enkel Installatiemateriaal of Montagemateriaal enz. Ook deze worden weer verdeeld in categorieën en zo blijft het doorgaan.

Het is dus niet zo dat in een kolom enkel cijfers of enkel tekst staat. Kan een combinatie zijn, maar ook of enkel tekst of enkel cijfers.
 
Heb je er een voobeeldbestandje van? De getallen achter M4x zijn wel vrij eenvoudig te achterhalen. Maar geldt dit voor alles wat in jouw sheet staat?
 
Toevallig wel. In een andere kolom, kolom G:

Penlengte: 12mm
Penlengte: 5mm
Penlengte: 8mm


In de kolom van mijn eerst genoemd staan bijvoorbeeld ook nog de teksten: Berker, Gira, Peha, Transparant 16 - 19mm etc. Deze staan allemaal goed. Zet ik bijvoorbeeld nu Transparant 6 - 9mm erbij dan staat deze onder Transparant 16 - 19mm. Maak ik nu van Transparant 06 - 09 dan komt deze weer wel boven Transparant 16 - 19mm te staan.

Zodra ik de cel begin met 1 voudig of met 2 voudig of met 3 voudig, staan ze ook goed. Verander ik dit in tekst: eenvoudig en tweevoudig en drievoudig, dan komt er de logische volgorde: drievoudig, eenvoudig en tweevoudig.

Al het andere is ook logisch voor de computer, maar op het zicht staat het niet logisch, omdat wij het anders willen hebben.

Het is dus of genoegen nemen met het probleem of de notatie 01 gebruiken in plaats van 1.
 
Laatst bewerkt:
Hmmm grappig. Zet een spatie voor het cijfer en dan komt het wel goed.

Met andere woorden M4x {Spatie}8, does the trick. :confused:

Aan de andere kant wel logisch nadat ik het heb opgezocht in mijn boeken. Normaal ga je ook per letter en of cijfer alfanumeriek op volgorde zetten. Het staat vreemd, maar feitelijk klopt het wel. Er wordt per positie vergeleken en gesorteerd. Bij enkel het cijfer 8, leest hij direct 8 en daarna niets meer. Bij het cijfer 12, leest hij eerst de 1. . De 8 en de 1 staan op dezelfde positie bij het op volgorde zetten. Dus volgt eerst 1 en daarna 8. Vervolgens wordt er gekeken naar de 2e positie enzovoort.

Daar in het alfanumeriek stelsel een spatie gelijkwaardig is aan niets "0", plaats je feitelijk op de eerste positie een "0" en dan als tweede positie een 8. {Spatie}8 staat gelijk aan 08. Zet nu alles weer volgens posities op volgorde en je weet genoeg.

Daarnaast hebben cijfers ook weer voorrang op letters.

Ik geloof dat het wel is opgelost. Ik moet in deze dus gewoon voor het simpele zorgen dat ik telkens een spatie invoeg.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan