Excel 2016'da her bir satırdaki harfleri/kelimeler kendi içinde A'dan Z'ye toplu sıralama yapamadım. Lütfen yardım eder misiniz? Dikey sıralama oluyor. excel 2016 da Veri/Sırala menüsünden topluca yapamadım, ancak tek tek yapılıyor. buda çok zor, çünkü 47000 satır var. topluca nasıl yapabilirim? Örnek: a b => ab a b a => aab a b a c ı => aabcı a b a c ı l ı k => aabcııkl a b a d i => aabdi a b a j u r => aabjru a b a j u r c u => aabcjruu a b a j u r c u l u k => aabcjklruuu
soldakiler sağdaki gibi sıralanacak. bu şekilde 47000 kelime var.
bunun için aşağıda verdiğim VBA makro fonksiyonunu kullanın.
Kullanımı: Excelde ALT+F11 e basın açılan vba editöründe menüden Insert/Module tıklayın açılan kod alanına aşağıdaki kodları ekleyin excelde =HarfSirala(A1) şeklinde fonksiyonu kullanın
Function HarfSirala(metin As String) As String 'makro Mesut Akcan '16/05/2019 Dim i As Long Dim j As Long Dim Temp Dim mArray() As String
ReDim mArray(Len(metin) - 1) For i = 1 To Len(metin) mArray(i - 1) = Mid(metin, i, 1) Next
For i = LBound(mArray) To UBound(mArray) - 1 For j = i + 1 To UBound(mArray) If UCase(mArray(i)) > UCase(mArray(j)) Then Temp = mArray(j) mArray(j) = mArray(i) mArray(i) = Temp End If Next j Next i
HarfSirala = Join(mArray, "")
End Function
Mesut Akcan hocam, çok teşekkür ederim. tam aradığım gibi oldu. Türkçe dersi için etkinlik hazırlama programına da yükledim, çalışıyor. Tekrar teşekkürler
quote:
Orijinalden alıntı: akcan
bunun için aşağıda verdiğim VBA makro fonksiyonunu kullanın.
Kullanımı: Excelde ALT+F11 e basın açılan vba editöründe menüden Insert/Module tıklayın açılan kod alanına aşağıdaki kodları ekleyin excelde =HarfSirala(A1) şeklinde fonksiyonu kullanın
Function HarfSirala(metin As String) As String 'makro Mesut Akcan '16/05/2019 Dim i As Long Dim j As Long Dim Temp Dim mArray() As String
ReDim mArray(Len(metin) - 1) For i = 1 To Len(metin) mArray(i - 1) = Mid(metin, i, 1) Next
For i = LBound(mArray) To UBound(mArray) - 1 For j = i + 1 To UBound(mArray) If UCase(mArray(i)) > UCase(mArray(j)) Then Temp = mArray(j) mArray(j) = mArray(i) mArray(i) = Temp End If Next j Next i
HarfSirala = Join(mArray, "")
End Function
Mesut Akcan hocam, kod ve formül çalışıyor. Ancak bişey dikkatimi çekti; Türkçe karakter olan ğ, ü, ş, ı, ö, ç, harflerini sıralamada en sona atıyor. bu nasıl düzeltilebilir?
Alttaki kodları deneyin. Kelimelerde büyük harf kullanmayacaksan harfler değişkenindeki büyük harfleri silebilirsin hatta türkçe olmayanlar gereksizse onları da silebilirsiniz.
Function HarfSirala(metin As String) As String 'makro Mesut Akcan '22/05/2019 Const harfler = "ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZabcçdefgğhıijklmnoöpqrsştuüvwxyz" Dim i As Integer Dim j As Integer Dim g As Integer Dim Temp
Dim mArray() As String g = Len(metin) ReDim mArray(g - 1) For i = 1 To g mArray(i - 1) = Mid(metin, i, 1) Next
For i = 0 To g - 1 For j = i + 1 To g - 1 If InStr(harfler, mArray(i)) > InStr(harfler, mArray(j)) Then Temp = mArray(j) mArray(j) = mArray(i) mArray(i) = Temp End If Next Next
HarfSirala = Join(mArray, "") End Function
quote:
Orijinalden alıntı: akcan
Alttaki kodları deneyin. Kelimelerde büyük harf kullanmayacaksan harfler değişkenindeki büyük harfleri silebilirsin hatta türkçe olmayanlar gereksizse onları da silebilirsiniz.
Function HarfSirala(metin As String) As String 'makro Mesut Akcan '22/05/2019 Const harfler = "ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZabcçdefgğhıijklmnoöpqrsştuüvwxyz" Dim i As Integer Dim j As Integer Dim g As Integer Dim Temp
Dim mArray() As String g = Len(metin) ReDim mArray(g - 1) For i = 1 To g mArray(i - 1) = Mid(metin, i, 1) Next
For i = 0 To g - 1 For j = i + 1 To g - 1 If InStr(harfler, mArray(i)) > InStr(harfler, mArray(j)) Then Temp = mArray(j) mArray(j) = mArray(i) mArray(i) = Temp End If Next Next
HarfSirala = Join(mArray, "") End Function
Mesut Akcan hocam, son gönderdiğiniz kod sorunu çözdü. Bu kod çok az kişiye lazım olsa da muhteşem çözüm. Tekrar çok teşekkürler. Elinize, klavyenize zihninize sağlık.
İşinize yaramasına sevindim. Kodu birebir kullanan sayısı az olabilir ancak kodun çözüm mantığı kavranıp geliştirilerek ya da değiştirilerek değişik amaçlarla da kullanılabilir.