Šta je novo?

Excel sortiranje

NShappy

Čuven
VIP član
Učlanjen(a)
24.05.2004
Poruke
5,448
Poena
955
Moja oprema  
Mobilni telefon
Huawei P30
Pozdrav svima,

Treba mi mala pomoć u Excel-u

Imam ovako neku kolonu, sortirana automatski sada izgleda ovako:
29
30
10A
10B
11A
11B
12A
12B
13A
13B
14A
14B
15A
15B
16A
16B
17A
17B
18A
18B
19A
19B
1A
1B
20A
20B
21A
21B
22A
22B
23A
23B
24A
24B
2A

I trebalo bi da se sortira, ali samo po brojevima, redom. Da zanemaruje A, B, tj. da slovo bude criteria 2, i takođe dvocifrene da vidi težinski, 10 ide posle 2 npr.

Na kraju da treba da izgleda ovako:
1A
1B
2A
2B
3A
3B
.
.
.
.
.
.
.
.
.
.
8A
8B
9A
9B
10A
10B
11A
.
.
.
.
.
.
23A
23B
24A
24B
29
30

Može li to nekako?!?

Hvala unapred
 
Sve jednocifrene pretvori u dvocifrene sa vodećom nulom.
Sortiraj pa u prikazu podesi format polja da se vodeća nula ne prikazuje.
 
Sve jednocifrene pretvori u dvocifrene sa vodećom nulom.
Sortiraj pa u prikazu podesi format polja da se vodeća nula ne prikazuje.

Uf, pa imam 30-ak tabela sa po preko 1000 unosa po jedoj koloni.... Kako da dodam vodeću nulu?!?

Msm, složenije su tabele nego što sam dao primer, izdvojio sam samo jedan segment.
U koloni koja me muči postoje samo brojevi bez slova i to jednocifreni, dvocifreni i trocifreni, a postoje i jednocifreni i dvocifreni sa A ili B.

...biće da baš ne mož' kako b' ja 'teo.
 
...biće da baš ne mož' kako b' ja 'teo.
Vidi neka ti ChatGPT napravi Python skriptu, meni je baš dosta pomogao sa raznoraznim Excel zavrzlamama (tabele od po 500.000+ redova, itd.), samo mu dobro objasni šta ti treba...
 
Možeš da probaš da dodaš novu kolonu u kojoj ćeš formulom:


Kod:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;"A";"");"B";"");"C";"")

da ukloniš sve A B i C... Onda sortiraš po toj koloni i nju sakriješ, pa ti prva ostane sortirana kako treba.

Sortirano po koloni B, evo kako izgleda kolona A:

GIXLEzd.png
 
Evo šta moj ChatGPT predlaže:

Excelova ugrađena funkcija sortiranja tretira sve podatke kao tekst, pa standardno sortiranje neće dati željeni rezultat. Da bismo ispravno sortirali podatke tako da se brojevi prvo poređaju prirodno (1, 2, 3... 10, 11...), a zatim uzeli u obzir slova kao sekundarni kriterijum (A pre B), možemo koristiti pomoćnu kolonu ili VBA kod.


Rešenje pomoću VBA (automatsko sortiranje)


Ako često radiš sa ovim podacima i želiš automatsko sortiranje, koristi sledeći VBA makro:


Sub SortByNumberAndLetter()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim rng As Range, c As Range
Dim arr() As Variant
Dim i As Long, j As Long
Dim temp As Variant

' Definišemo opseg podataka (kolona A)
Set rng = ws.Range("A1:A" & ws.Cells(Rows.Count, 1).End(xlUp).Row)
arr = rng.Value

' Bubble Sort sa prilagođenim poređenjem
For i = LBound(arr, 1) To UBound(arr, 1) - 1
For j = i + 1 To UBound(arr, 1)
If CompareCustom(arr(i, 1), arr(j, 1)) > 0 Then
temp = arr(i, 1)
arr(i, 1) = arr(j, 1)
arr(j, 1) = temp
End If
Next j
Next i

' Upis nazad u Excel
rng.Value = arr
End Sub

Function CompareCustom(v1 As Variant, v2 As Variant) As Integer
Dim num1 As Integer, num2 As Integer
Dim char1 As String, char2 As String

' Izvlačimo broj i slovo
num1 = Val(v1)
num2 = Val(v2)
char1 = Right(v1, Len(v1) - Len(CStr(num1)))
char2 = Right(v2, Len(v2) - Len(CStr(num2)))

' Prvo poredimo brojeve
If num1 <> num2 Then
CompareCustom = num1 - num2
Else
' Ako su brojevi isti, poredimo slova
CompareCustom = StrComp(char1, char2, vbTextCompare)
End If
End Function


Kako koristiti VBA makro?


  1. Otvori Excel i pritisni ALT + F11.
  2. Klikni Insert → Module.
  3. Nalepi kod i sačuvaj.
  4. Pokreni SortByNumberAndLetter u VBA editoru ili iz Makro menija (ALT + F8).



2. NAČIN - Rešenje pomoću pomoćne kolone (bez VBA)


Ovo je najlakši način ako ne želiš da koristiš VBA.


  1. Pretpostavimo da su podaci u koloni A, počevši od A1.
  2. U kolonu B (pomoćnu) unesi sledeću formulu u B1:

    =VALUE(LEFT(A1, LEN(A1) - IF(ISNUMBER(RIGHT(A1)*1), 0, 1)))*100 + CODE(RIGHT(A1))



    🔹 Šta formula radi?
    • Uklanja slovo na kraju (ako postoji) i konvertuje broj.
    • Množi broj sa 100 (da bi dvocifreni brojevi bili poređani ispravno).
    • Ako postoji slovo, dodaje ASCII kod poslednjeg karaktera (A=65, B=66).
    1. Povuci formulu nadole za sve vrednosti.
    2. Sortiraj podatke po vrednostima u koloni B.
    3. Sakrij kolonu B (ili je obriši nakon sortiranja).
 
Poslednja izmena:
Ok, hvala...
Nisam baš nešto vičan sa tim skriptama.
Ali igraću se malo sutra.
 
Nazad
Vrh Dno