Metinlerdeki Türkçe Karakterleri Değiştirme

  • Konuyu başlatan Konuyu başlatan 52779
  • Başlangıç tarihi Başlangıç tarihi

Kısa Açıklama

Metinlerdeki Türkçe Karakterleri Değiştirme isimli başlıkta, ilgili işlemlere dair detaylar yer almaktadır.
Metinlerdeki Türkçe Karakterlerin Değiştirilmesi sorumuzda,
İngiliz Alfabesinde bulunmayan Türkçe karakterlerin yerlerine, İngiliz Alfabesindeki yakın karşılıklarının getirilmesini istiyoruz.
Açıklamayı resimde görebilirsiniz.
Açıklama, çalışma amaçlı olarak eklenen dosyada da yer almaktadır.

R391.webp
Excel'in tüm yöntemleriyle yapılacak çözümler kabul edilecektir.
Çözümlerinizi bekleriz... Şimdiden teşekkürler...
 

Ekli dosyalar

Merhaba ,
PowerQuery alternatifi ektedir.




Kod:
let
    Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    #"Değiştirilen Değer" = Table.ReplaceValue(Source,".","",Replacer.ReplaceText,{"Şiir"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Değiştirilen Değer",{{"Şiir", type text}}),
    Custom1 = List.Accumulate(
    {0..List.Count(Buldeğiştir[Bul])-1},
    #"Changed Type",
    (state, current) => Table.ReplaceValue(state,Buldeğiştir[Bul]{current},Buldeğiştir[Değiştir]{current},Replacer.ReplaceText,{"Şiir"})
),
    #"Yeniden Adlandırılan Sütunlar" = Table.RenameColumns(Custom1,{{"Şiir", "Türkçe Karakterleri Değiştirilmiş Metinler"}})
in
    #"Yeniden Adlandırılan Sütunlar"

let
    Source = Excel.CurrentWorkbook(){[Name="Buldeğiştir"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Bul", type text}, {"Değiştir", type text}}),
    Özel1 = #table({"First Column", "Second Column"}, {{"ç","c"},{"Ç","C"},{"ı","i"},{"İ","I"},{"ğ","g"},{"Ğ","G"},{"Ö","O"},{"ö","o"},{"ş","s"},{"Ş","S"},{"ü","u"},{"Ü","U"}}),
    #"Yeniden Adlandırılan Sütunlar" = Table.RenameColumns(Özel1,{{"First Column", "Bul"}}),
    #"Değiştirilen Tür" = Table.TransformColumnTypes(#"Yeniden Adlandırılan Sütunlar",{{"Bul", type text}}),
    #"Yeniden Adlandırılan Sütunlar1" = Table.RenameColumns(#"Değiştirilen Tür",{{"Second Column", "Değiştir"}})
in
    #"Yeniden Adlandırılan Sütunlar1"

1696378655414.webp
 

Ekli dosyalar

Çözüm
Benim çözümüm şu şekildeydi... Excel365
Kod:
=LET(a;"çÇğĞıİöÖşŞüÜ";b;"cCgGiIoOsSuU";MAP(" "&B3:B42;LAMBDA(x;LET(d;PARÇAAL(x;SIRALI(UZUNLUK(x));1);e;BUL(d;a);KIRP(ARALIKBİRLEŞTİR(EĞERHATA(PARÇAAL(b;e;1);d)))))))

Bir de alternatif. Excel365
Kod:
=LET(a;{"ç";"Ç";"ğ";"Ğ";"ı";"İ";"ö";"Ö";"ş";"Ş";"ü";"Ü"};b;{"c";"C";"g";"G";"i";"I";"o";"O";"s";"S";"u";"U"};REDUCE(B3:B42;a;LAMBDA(x;y;YERİNEKOY(x;y;İNDİS(b;KAÇINCI(1;--ÖZDEŞ(y;a);0))))))
 
365 versiyonu Reduce-Yerinekoy ile bir alternatif daha olsun.

Kod:
=LET(a;{"ç";"Ç";"ğ";"Ğ";"ı";"İ";"ö";"Ö";"ş";"Ş";"ü";"Ü"};b;{"c";"C";"g";"G";"i";"I";"o";"O";"s";"S";"u";"U"};c;SIRALI(;12);REDUCE(B3:B42;c;LAMBDA(x;y;YERİNEKOY(x;İNDİS(a;y);İNDİS(b;y)))))
 
değişik bakış açısı ile Tüm harf ve karakterler
CSS:
Function KarakterDegis(ByVal Metin)
    Dim alan As Range, Eski_Karakter(), Yeni_Karakter()

    Eski_Karakter = Array("A", "B", "C", "Ç", "D", "E", "F", "G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z", "Q", "X", "W", "-", "_", " ", "+", "ğ", "ı", "ö", "ş", "ü", "ç", ",", "&", ".", "#", "!", ";", ":", "?", "\", "'", "/", "(", ")", ":", "$", "½")
    Yeni_Karakter = Array("a", "b", "c", "ç", "d", "e", "f", "g", "ğ", "h", "ı", "i", "j", "k", "l", "m", "n", "o", "ö", "p", "r", "s", "ş", "t", "u", "ü", "v", "y", "z", "q", "x", "w", "_", "_", "_", "_", "g", "i", "o", "s", "u", "c", "", "_", "_", "", "", "", ":", "", "", "", "", "", "", "_", "", "")
   
        Veri = Metin
        DoEvents
        For X = 0 To UBound(Eski_Karakter)
            Veri = Replace(Veri, Eski_Karakter(X), Yeni_Karakter(X))
        Next
        KarakterDegis = Veri
End Function
 
Bu da python örnek olsun:

Python:
harfler = {'ç':'c','ğ':'g','ı':'i','ö':'o','ş':'s','ü':'u','Ç':'C','Ğ':'G','İ':'I','Ö':'O','Ş':'S','Ü':'U'}
k=[]
for i in xl("F5:F42")[0]:    
    düzenleme = [harfler.get(char, char) for char in i]
    k.append(''.join(düzenleme))
k
 
Ben böyle düşündüm.
VBA:
Sub TurkceKarakter()
Range("B3:B" & Cells(Rows.Count, 2).End(3).Row).Copy Range("F3")
eski = Split(Join(Array("çÇğĞıİöÖşŞüÜ"), ","), ",")
yeni = Split(Join(Array("cCgGiIoOsSuU"), ","), ",")
For i = LBound(eski) To UBound(yeni)
    Range("F3:F" & Cells(Rows.Count, 6).End(3).Row).Replace What:=eski(i), Replacement:=yeni(i), LookAt:=xlPart, MatchCase:=True
Next
End Sub
 
Geri
Üst