Det är alltid ett bekymmer att sortera fält som innehåller både text och numeriska värden. De numeriska värdena sorteras som text, vilket betyder att ”10” kommer före ”2”. Det är inte alltid så bra. Lösningen är att dela upp textfältet i två (eller flera) fält. Ett fält med text och ett med numeriska värden och sedan sortera efter båda. Då blir det korrekt. Vår trogne läsare Lasse Öberg från Östersund tipsar om detta.
T.ex. finns gatuadresserna ”Storgatan 2” och ”Storgatan 10” i en tabell i fältet ”Gatuadress”. Sorterar du fältet i stigande ordning kommer ”Storgatan 10” före ”Storgatan 2”. Lösningen är att dela upp fältet i två fält, ett textfält och ett numeriskt fält och sedan sortera dem var för sig. Jag gör två beräkningsfält för detta.
Beräkningsformeln för att få fram gatunumret kan se ut så här:
GetAsNumber (Substitute(Gatuadress;"["-";""];[",";""]))
Formeln ersätter först eventuella bindestreck, som kan tolkas som minustecken, och kommatecken, som tolkas som decimaltal från gatuadressen. Sedan används funktionen GetAsNumber som tar alla numeriska tecken i gatuadressen och gör om till ett tal. Jag kallar fältet med beräkningsresultatet för ”Gatunummer”.
Fältet ”Gatunummer” används i nästa formel som tar fram själva gatans namn:
Trim(Substitute(Gatuadress;Gatunummer;""))
Gatunumret tas bort från gatuadressen samt inledande och avslutande mellanslag tas bort med funktionen Trim.
Istället för att bara sortera efter fältet ”Gatuadress”, som ju blir i fel ordning, sorterar jag nu efter ”Gata” och ”Gatunummer”:
<