Excel range sorteren met vba

Status
Niet open voor verdere reacties.

combinatietang

Gebruiker
Lid geworden
24 mrt 2008
Berichten
48
Beste forumleden.

Ik heb een lijst met codes die ik wil sorteren.
Het probleem is dat de codes uit een combinatie van getallen en letters kunnen bestaan, waardoor de uitkomst niet altijd goed is.
Hetzelfde geldt voor getallen boven de 99.
In bijgevoegd excel bestand heb ik een voorbeeld geplaatst.
Hierin staan: de foute sortering, de gewenste sortering en de macro die ik nu gebruik.

Ik ben benieuwd of dit is op te lossen.
 

Bijlagen

  • Sorteren.xlsm
    19 KB · Weergaven: 36
De mengelmoes van getallen en letters in de codes valt nog op te lossen bij het sorteren, maar het feit dat je nu eens wel en dan eens niet een punt ertussen zet (20a of 20.a) kan natuurlijk geen enkele sortering negeren en zorgt dus voor wat jij als fout percepteert maar eigenlijk correct is ...
Enige normering is dus aan te raden vb. tussen cijfers en letters komt er altijd of nooit een punt te staan.
 
@DigiCafee
De codes komen uit een extern bestand. Ik dus geen invloed op de wijze waarop de codes worden aangeleverd, en misschien valt niet alles op te lossen.
De grootste moeite heb ik met het getal 100 dat niet onderaan staat. Verder heb ik graag de volgorde 20, 20a, 20.10 ipv 20, 20.10, 20a.
 
Als het een vaste lijst met codes is dan kan je oplossen met aangepast sorteren.
 
@VenA
De ene keer is de lijst korter, de andere keer langer, maar wel altijd dezelfde kolom.
De gebruiker bepaalt de code. Hierdoor is er geen vaste lijst.
Ik heb van alles opgezocht en uitgeprobeerd, maar helaas,... ook met aangepast sorteren heb ik even gestoeid.
 
Laatst bewerkt:
Wat jij wil is geen sortering, maar een zelf-bedachte volgorde.
Een sortering voldoet aan een algemeen consistent algoritme (cijfers, letters).
Cellen die dubbele waarden bevatten, voldoen daar al niet aan.
 
Laatst bewerkt:
@Snb
Tja,... Is het wel mogellijk om 100 na 99 te laten komen. Hij sorteert nu op het 1e cijfer, dus volgorde 100 -99.
 
Ja, dat is sorteren hé ...
Dat wordt normaal gezien opgelost door alle getallen hetzelfde aantal digits te laten hebben en dat kan als je ze als tekst opslaat.

Dus 99 wordt dan 099 en 100 blijft 100
en dan zal 099 voor 100 gesorteerd worden... maar aangezien je niet kan ingrijpen op die codes om er enige goeie zin in te brengen lijkt me dat niet beheersbaar.
 
@DigiCafee
Het is niet dat ik de codes niet mag aanpassen, maar dan wel met vba.
Ik heb zelf bijvoorbeeld al een code gemaakt om een "0" te zetten voor getallen <10.
Ter info: meestal beginnen de codes met twee cijfers, al dan gevolgd door een punt. Bijvoorbeeld 22.10
 
bij benadering
 

Bijlagen

  • Sorteren.xlsm
    25,5 KB · Weergaven: 51
@cow18
Bedankt voor je input. Het probleem voor getallen boven de 99 en onder de 10 is met jouw code getackeld.
Vervolgens kan ik de output van jouw code misschien gebruiken om de vervolgslag te maken. Ik zat te denken aan: kijken of de laatste waarde een cijfer of letter is .
Voorbeeld 030.33b en 030.33.34 Je kunt dan een code schrijven die bepaalt dat eerst de letter komt en dan de waarde met cijfer. Bijvoorbeeld met Len, Trim, Isnummeric.
Misschien kan ik daar nog mee stoeien, of heeft iemand betere ideeën?
 
helemaal perfect krijg je dit ding niet.
een 1 komt altijd voor een a
functie is voorlopig nogal knoeierig geschreven, via trial and error omdat er geen echte logica er achter zit, moet nog opgeschoond worden
 

Bijlagen

  • Sorteren (4).xlsm
    31,8 KB · Weergaven: 46
Laatst bewerkt:
@Cow18
Dankjewel voor het meedenken!! Ik zal af en toe moeten googlen om je code helemaal te doorgronden.
In elk geval zitten er genoeg ideeën in om mee verder te stoeien.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan