• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Makro ile sıralamada türkçe karakter (ı,ş,ü,ğ,ç,ö) problemi.

  • Konbuyu başlatan Konbuyu başlatan ffff7
  • Başlangıç tarihi Başlangıç tarihi
Katılım
8 Ocak 2007
Mesajlar
147
Excel Vers. ve Dili
2003
Xp
Türkçe
İngilizce
makro ile sıralamam gereken bir listem var. Excel in sırala fonksiyonunu kullanmadan sıralamam gerekiyor.
Kullandığım yöntem aşağıda ama türkçe karakterler (ı,ş,ü,ğ,ç ve ö) hep son sıralara gidiyor...

Kod:
Sub sırala()
son = [a65536].End(3).Row
ReDim lst(son)
For k = 1 To son
lst(k) = Cells(k, 1)
Next
For k = 1 To son - 1
For l = k + 1 To son
If LCase(lst(k)) > LCase(lst(l)) Then _
gec = lst(k): lst(k) = lst(l): lst(l) = gec
Next: Next
For k = 1 To son
Cells(k, 2) = lst(k)
Next
End Sub


Bunu çözebileceğim bir komut veya yöntem varmı acaba?
(tabi 29 harfin hepsini tanımlayıp sıralamayı bu tanımlamaya göre yaptırmak dışında :) )
 
Aşağıdaki gibi deneyin.

Kod:
[LEFT]Sub sırala()
son = [a65536].End(3).Row
ReDim lst(son)
For k = 1 To son
lst(k) = Cells(k, 1)
Next
For k = 1 To son - 1
For l = k + 1 To son
If Evaluate("=UPPER(""" & lst(k) & """)")>Evaluate("=UPPER(""" & lst(l) & """)")
gec = lst(k): lst(k) = lst(l): lst(l) = gec
Next: Next
For k = 1 To son
Cells(k, 2) = lst(k)
Next
End Sub[/LEFT]
 
Kodunuzu aşağıdaki şekilde değiştirebilirsiniz.
Kod:
Sub sirala()
son = [a65536].End(3).Row
ReDim lst(son)
For k = 1 To son
    lst(k) = Cells(k, 1)
Next
For k = 1 To son - 1
    For l = k + 1 To son
        If StrComp(lst(k), lst(l), vbTextCompare) = 1 Then
            gec = lst(k): lst(k) = lst(l): lst(l) = gec
        endif
    Next
Next
For k = 1 To son
    Cells(k, 2) = lst(k)
Next
End Sub
veya
Kod:
Sub sirala()
son = [a65536].End(3).Row

lst = Range("a1:a" & son)

For k = 1 To son - 1
    For l = k + 1 To son
        If StrComp(lst(k, 1), lst(l, 1), vbTextCompare) = 1 Then
            gec = lst(k, 1): lst(k, 1) = lst(l, 1): lst(l, 1) = gec
        End If
    Next
Next

Range("b1:b" & son).Value = lst
End Sub
Kendi kullandığım çalışmadan bir örnek.
 
Son düzenleme:
çok çok çok teşekkür...

Sayın Leventm ve Sayın Veyselemre çok teşekkür ederim.
Verdiğiniz cevaplarda aradığım cevabın yanında bir sürü extra sorum olabilecek konunun açıklamasını buldum :)
Çok teşekkürler.

Hep Böyle kalın... :) :icelim:
 
Geri
Üst