Hücre içindeki sayıları sıralama

Katılım
18 Ekim 2009
Mesajlar
7
Excel Vers. ve Dili
Excel 2003
TR.
Merhabalar. Forumda ve nette arama yapsamda aradığımı bulamadım.
Bir hücrenin içeriği misal; 23,4,15,17,9 gibi.
Bu sayıları sıraya dizerek; 4,9,15,17,23 haline nasıl getiririz.
Kanaatimce makroyla yapılacak fakat makrodan fazla anlamıyorum.
Yardımcı olabilecek arkadaşlara teşekkür ederim.
 
Katılım
31 Ocak 2012
Mesajlar
2,430
Excel Vers. ve Dili
Excel 2010 , Türkçe
Altın Üyelik Bitiş Tarihi
24.01.2019
Merhaba,

Yardımcı kolonlar kullanarak formüllerle çözmeye çalıştım.

Eki inceleyiniz...

Kolay gelsin...
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

A sütunundaki istediğiniz gibi yazılan değerleri B sütununda sıralar.

Kodları kendi çalışmalarınıza uyarlayınız.

Kod:
Sub Sirala()
    
    Dim i   As Integer, _
        j   As Integer, _
        k   As Integer, _
        Temp As Variant, _
        s
    
    For k = 1 To Cells(Rows.Count, "A").End(3).Row
        s = Split(Cells(k, "A"), ",")
        Cells(k, "B") = ""
        For i = 0 To (UBound(s) - 1)
           For j = i To UBound(s)
              If Val(s(j)) < Val(s(i)) Then
                 Temp = s(i)
                 s(i) = s(j)
                 s(j) = Temp
              End If
           Next j
        Next i
        
        For i = 0 To UBound(s)
            If Cells(k, "B") = "" Then
                Cells(k, "B") = s(i)
            Else
                Cells(k, "B") = Cells(k, "B") & ", " & s(i)
            End If
        Next i
    Next k
    
End Sub
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Bende alternatif olarak kullanıcı tanımlı fonksiyon hazırladım. Bu şekilde değişik ayıraçlarla ayrılmış sayıları sıralayabilirsiniz.

Hücrede kullanım şekli;

Kod:
=DİZİLİM(A1;",")

Kullanılan fonksiyon;

Kod:
Option Explicit

Function DİZİLİM(Veri As Range, Optional Ayırac As String = ",")
    Dim Eleman, X, Dizi, Say, Liste
    
    Application.Volatile True
    
    Eleman = Split(Veri.Text, Ayırac)
    ReDim Dizi(1 To 1)
    
    For X = 0 To UBound(Eleman)
        Say = Say + 1
        ReDim Preserve Dizi(1 To Say)
        Dizi(Say) = CDbl(Eleman(X))
    Next
    
    For X = 0 To UBound(Eleman)
        If Liste = "" Then
            Liste = WorksheetFunction.Small(Dizi, X + 1)
        Else
            Liste = Liste & "," & WorksheetFunction.Small(Dizi, X + 1)
        End If
    Next
    
    DİZİLİM = Liste
End Function
 

Ekli dosyalar

Katılım
18 Ekim 2009
Mesajlar
7
Excel Vers. ve Dili
Excel 2003
TR.
sakman26,
Necdet Yeşertener,
Korhan Ayhan,
arkadaşlar yardımlarınız için çok teşekkürler.
İyi çalışmalar.
 
Katılım
12 Mayıs 2009
Mesajlar
193
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
17.06.2021
Merhaba,

Korhan ayhan Bey'in yazmış olduğu makroyu kullandım, ancak virgülden sonra boşluk bırakmıyor, yani rakamlar şöyle oluyor: 1,5,7,9

Virgülden sonra boşluk kalması için makronun nasıl olması gerekiyor? Yani şu şekilde: 1, 5, 7, 9 (son rakamdan sonra boşluk bırakmasın).

Yardımcı olabilirseniz sevinirim.

İyi günler
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub siralaAZ()
    For i = 1 To Cells(Rows.Count, 1).End(3).Row
        sirala = Replace(Cells(i, 1), " ", "")
        bol = Split(sirala, ",")
        For X = 0 To UBound(bol) - 1
            For y = X + 1 To UBound(bol)
                If bol(X) > bol(y) Then
                    tmp = bol(X)
                    bol(X) = bol(y)
                    bol(y) = tmp
                End If
            Next y
        Next X
        Cells(i, 2) = Join(bol, ", ")
    Next i
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Boşluk için fonksiyonu aşağıdaki şekilde kullanmalısınız.

Değiştirdiğim bölümü kırmızı renkle belirttim.

Kod:
Option Explicit

Function DİZİLİM(Veri As Range, Optional Ayırac As String = ",")
    Dim Eleman, X, Dizi, Say, Liste
    
    Application.Volatile True
    
    Eleman = Split(Veri.Text, Ayırac)
    ReDim Dizi(1 To 1)
    
    For X = 0 To UBound(Eleman)
        Say = Say + 1
        ReDim Preserve Dizi(1 To Say)
        Dizi(Say) = CDbl(Eleman(X))
    Next
    
    For X = 0 To UBound(Eleman)
        If Liste = "" Then
            Liste = WorksheetFunction.Small(Dizi, X + 1)
        Else
            [COLOR="Red"]Liste = Liste & ", " & WorksheetFunction.Small(Dizi, X + 1)[/COLOR]
        End If
    Next
    
    DİZİLİM = Liste
End Function
 
Katılım
12 Mayıs 2009
Mesajlar
193
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
17.06.2021
Çok teşekkür ederim, çok sağolun.
 
Üst