Yritän lajitella taulukon soluja numerojärjestykseen. Soluissa olevat tiedot ovat pääasiassa lukuja, mutta joissakin on myös kirjaimia lopussa. Esim. 1000, 2045, 2346, 1548aa, 1862 bbb jne. Ongelmana on, että Excel aakkostaa ensin pelkkiä numeroita sisältävät ja sitten ne joissa on tekstiä perässä (suoraan numerossa kiinni tai välilyönnillä erotettuna). Minulla oli solujen tyyppinä "Yleinen", muutin sen muotoon "Teksti", mutta se ei auttanut. Miten saisin solut järjestykseen. Käytössä on Excel 2013.
Solujen lajittelu
2
1394
Vastaukset
- Anonyymi
En keksinyt yhtäkkiä muuta kuin käyttää apusaraketta. Lajittelu menee oikein, jos lisäät kaikkien perään vaikka merkin "-". Välilyönti, numero tai desimaalierotin ei auta.
moduuliin...
Sub Sorttaa()
Dim Rng As Range
Dim Vika As Integer
Dim Solu As Range
Dim Numero As String
Dim Teksti As String
Dim a As Variant
Application.DisplayAlerts = False
On Error Resume Next
'Type:=8 sallii vain solualueen
Set Rng = Application.InputBox( _
Title:="Lajittelu", _
Prompt:="Valitse lajiteltava alue sarakkeesta", _
Type:=8)
On Error GoTo 0
If Rng Is Nothing Then Exit Sub
Rng.NumberFormat = "@"
Sheets.Add.Name = "Huuhaa"
Rng.Copy Worksheets("Huuhaa").Range("A1")
'pilkotaan solu numero ja tekstiosaan
For Each Solu In Worksheets("Huuhaa").Range("A1").Resize(Rng.Count)
' numero-osa(toimii vain, jos numero-osa on alussa
Numero = Val(Solu)
Solu.Offset(0, 1) = Numero
' tekstiosa
Teksti = Application.WorksheetFunction.Replace(Solu, 1, Len(Numero), "@")
a = Split(Teksti, "@")
' lisätään esim. a-kirjain, jotta saadaan lajiteltua pelkän luvun sisältävät solut oikein
Solu.Offset(0, 2) = "a" & a(1)
Next
' lajitellaan numero-osan ja sitten kirjainten mukaan
Worksheets("Huuhaa").Columns("A:C").Select
ActiveWorkbook.Worksheets("Huuhaa").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Huuhaa").Sort.SortFields.Add2 Key:=Range("B1:B8") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Huuhaa").Sort.SortFields.Add2 Key:=Range("C1:C8") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Huuhaa").Sort
.SetRange Range("A1:C8")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'muuta taulukon nimi sopivaksi
Worksheets("Huuhaa").Range("A1:A" & Rng.Count).Copy Worksheets("Taul1").Range(Rng.Address)
Worksheets("Huuhaa").Delete
Application.DisplayAlerts = True
End Sub
Keep EXCELing
@Kunde
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
eerikäinen novassa sanoi ei kukaan enää aja manuaalivaihteilla
meillä on 3 autoa talissa ja kaikissa manuaalilaatikot, on meillä vielä tämmöiset vaikka toisin puhutaan.2462741Ilo, joka nousee silmiisi saakka
kun katseemme kohtaavat. Olet energinen, aito, ihana. Välillä tuijotat suoraan silmiini - enkä hämmenny, katson takaisin691826- 681790
Jokaisella on omat syntinsä
Minä olisin niin mielelläni sinun. Ehkä joskus viittasitkin siihen. Olet nainen ajatuksissani jatkuvasti ja taidat tietä901677En oikeasti
Tiennyt että sinulla on ollut vaikeuksia ja huonoja aikoja. Olen oikeasti pahoillani, ja olisin myös toiminut eritavoin1741651Vakava varoitus perussuomalaisista!
Keskustan Annika Saarikolta veret seisauttavaa tekstiä, lukekaa uutinen kokonaisuudessaan, tässä siitä maistiainen: ”Ke273137590-luvulla maa syöksyi lamaan, ja silloinkin oli syypäinä samat tahot kuin nyt
Laman aiheuttajat olivat demarivetoinen virheellinen finanssipolitiikka, sekä ay-liikkeen taipumattomuus tilanteessa mik1511353- 1731017
Olisitko ihminen minulle. Ihan ihminen vain.
Tiedätkö, että saan kyyneleet silmiini, niin syvästi sinua kaipaan. Meidän välillä on jotain todella syvää, kaunista ja571001Mä olisin niin iloinen
Jos vielä joskus nähtäis.. Ollaanko tulkittu mies toisiamme väärin?. Kumpikin luuli ettei toinen tykkää, vaikka molemmat62877