• DİKKAT

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

cümle-kelime-hece

  • Konbuyu başlatan Konbuyu başlatan modoste
  • Başlangıç tarihi Başlangıç tarihi

modoste

Altın Üye
Katılım
31 Mayıs 2008
Mesajlar
3,712
Excel Vers. ve Dili
Microsoft OFFİCE Ev ve İş 2019 TR
merhabalar sayın hocalarım
A1 hücresinde bir cümle olacak
bu cümledeki önce kelimeleri ayıracak sonra her kelimedeki hecelemeyi ayıracak bir formülasyon bir çalışma yapılabilir mi
 
Merhaba.

Sayın SERDAR'ın verdiği çözümden farklı ise alternatif olsun. Hazırlamıştım göndereyim bari.

Hece olayı ile ilgili olarak aşağıdaki konu sayfasındaki açıklamaları gözden geçiriniz. Hece olayı ile ilgili olarak ben de Sayın SERDAR'a katılıyorum.

Heceleme

Cümlenin A1 hücresinde olduğu varsayılmıştır.
Formülü B1 hücresine uygulayın ve BOŞ sonuç elde edinceye kadar sağa doğru kopyalayın.
.
Kod:
=[COLOR="red"]EĞER[/COLOR]([COLOR="red"]SÜTUN[/COLOR](A1)>[COLOR="red"]UZUNLUK[/COLOR]([COLOR="red"]KIRP[/COLOR]($A1))-[COLOR="red"]UZUNLUK[/COLOR]([COLOR="red"]YERİNEKOY[/COLOR]([COLOR="red"]KIRP[/COLOR]($A1);" ";""))+1;"";[COLOR="red"]PARÇAAL[/COLOR]([COLOR="red"]KIRP[/COLOR]($A1)&" ";[COLOR="red"]EĞER[/COLOR]([COLOR="red"]SÜTUN[/COLOR](A1)=1;1;[COLOR="red"]BUL[/COLOR]("|";[COLOR="red"]YERİNEKOY[/COLOR]([COLOR="red"]KIRP[/COLOR]($A1);" ";"|";[COLOR="red"]EĞER[/COLOR]([COLOR="red"]SÜTUN[/COLOR](A1)=1;"";[COLOR="red"]SÜTUN[/COLOR](A1)-1)))+1);[COLOR="red"]BUL[/COLOR]("|";[COLOR="red"]YERİNEKOY[/COLOR]([COLOR="red"]KIRP[/COLOR]($A1)&" ";" ";"|";[COLOR="red"]SÜTUN[/COLOR](A1)))-[COLOR="red"]EĞER[/COLOR]([COLOR="red"]SÜTUN[/COLOR](A1)=1;1;[COLOR="red"]BUL[/COLOR]("|";[COLOR="red"]YERİNEKOY[/COLOR]([COLOR="red"]KIRP[/COLOR]($A1)&" ";" ";"|";[COLOR="red"]EĞER[/COLOR]([COLOR="red"]SÜTUN[/COLOR](A1)=1;"";[COLOR="red"]SÜTUN[/COLOR](A1)-1)))+1)))
 
cevaplarınız için teşekkür ederim
heceleme ile ilgili inşallah bir çalışması olan vardır
 
İyi Geceler,

Konuyu okuyunca ilgimi çekti. Yapılabilirse her zaman ve her yerde ihtiyaç duyulabilecek bir çalışma olabilir.

Türk Dil Kurumunun Genel Ağ'daki sayfasında bulunan güncel Yazım Kılavuzu'ndan heceleme ile ilgili kuralları aşağıda yazdım.

Toplam 5 maddeye göre heceleme yapılmaktadır. Kurallara bakıldığında bana excel ortamında heceleme yapılabilirmiş gibi geldi.

Çalışma -ki bu oldukça faydalı olacaktır- yapmak isteyen uzmanlara kılavuz olması açısından ilgili kurallar şöyle:




1. Türkçede kelime içinde iki ünlü arasındaki ünsüz, kendinden sonraki ünlüyle hece kurar: a-ra-ba, bi-çi-mi-ne, in-sa-nın, ka-ra-ca vb.

2. Kelime içinde yan yana gelen iki ünsüzden ilki kendinden önceki ünlüyle, ikincisi kendinden sonraki ünlüyle hece kurar: al-dı, bir-lik, sev-mek vb.

3. Kelime içinde yan yana gelen üç ünsüz harften ilk ikisi kendinden önceki ünlüyle, üçüncüsü kendinden sonraki ünlüyle hece kurar: alt-lık, Türk-çe, kork-mak vb.

4. Batı kökenli kelimeler, Türkçenin hece yapısına göre hecelere ayrılır: band-rol, kont-rol, port-re, prog-ram, sant-ral, sürp-riz, tund-ra, volf-ram vb.

5. İlk heceden sonraki heceler ünsüzle başlar. Bitişik yazılan kelimelerde de bu kurala uyulur: ba-şöğ-ret-men, il-ko-kul, Ka-ra-os-ma-noğ-lu vb.

Yazım kuralları(heceleme) konusunda bilgi düzeyinde destek verebilirim.

TDK: http://www.tdk.gov.tr/index.php?opt...n-Bolunmesi&catid=50:yazm-kurallar&Itemid=132
 
Selamlar,
Makro ile yapılabilir diye düşünüyorum. Makro düşünür müsünüz?
 
Fikir vermesi açısından makro ile bir çalışma yaptım. Denediğim kelimelerde hecelemeyi doğru sonuçlandırdı.

Kod:
Sub heceleme()
harf = "aâeıiîoöuûüAÂEIİÎOÖUÛÜ"
deg = [a1]
If Len(deg) = 1 Then
MsgBox deg
Exit Sub
End If
For x = Len(deg) To 1 Step -1
t = t + 1 'geçilen harf sayısı
If x <> Len(deg) Then
say = InStr(harf, Mid(deg, x, 1))
unlusay = InStr(harf, Mid(deg, x + 1, 1))
If x = 2 And say = 0 Then
    If InStr(harf, Mid(deg, x - 1, 1)) = 0 Then
        hece = hece & "-" & StrReverse(Mid(deg, x - 1, t + 1))
        Exit For
    End If
End If
If unlusay > 0 Or x = 1 Then
If say > 0 And x <> 1 Then
hece = hece & "-" & StrReverse(Mid(deg, x + 1, t - 1))
t = 1
Else
hece = hece & "-" & StrReverse(Mid(deg, x, t))
t = 0
End If
End If
End If
Next
MsgBox Mid(StrReverse(hece), 1, Len(hece) - 1)
End Sub
 

Ekli dosyalar

Sayın leumruk,
Çalışmanız için teşekkürler.
İki konu dikkatimi çekti:
1. Heceleme yapılınca sonucu bir hücreye yazsa daha iyi olur.
2. Uzun ünlülerde sonuç vermiyor.
duyûn, irfân, âlâ vb.
 
Sayın leumruk,
Çalışmanız için teşekkürler.
İki konu dikkatimi çekti:
1. Heceleme yapılınca sonucu bir hücreye yazsa daha iyi olur.
2. Uzun ünlülerde sonuç vermiyor.
duyûn, irfân, âlâ vb.
Kod:
3. 2 Ünlü yan yana geldiğinde sonuç vermiyordu.

Kodları bu 2 hata giderilmiş şekilde güncelledim.
 
Mustafa Bey;

Elinize sağlık, ilginç bir çalışma olmuş. Ben yaptığım birkaç denemede, sesli harfle başlayan "araba", "evli" gibi kelimelerde sıkıntı olduğunu gördüm. Bir de; "kalemtraş" kelimesinde beklenen sonucu vermedi. Belki kelimenin türetilmiş olması özelliğindendir bilemiyorum.

Elinize sağlık,

.
 
Mustafa Bey;

Elinize sağlık, ilginç bir çalışma olmuş. Ben yaptığım birkaç denemede, sesli harfle başlayan "araba", "evli" gibi kelimelerde sıkıntı olduğunu gördüm. Bir de; "kalemtraş" kelimesinde beklenen sonucu vermedi. Belki kelimenin türetilmiş olması özelliğindendir bilemiyorum.

Elinize sağlık,

.

Teşekkür ederim, Haluk Bey,
araba kelimesindeki sorunu düzelttim.
"kalemtraş"ı imlâ klavuzuna göre "kalemtıraş" şeklinde yazmak gerekiyor.:)
 
Teşekkür ederim, Haluk Bey,
araba kelimesindeki sorunu düzelttim.
"kalemtraş"ı imlâ klavuzuna göre "kalemtıraş" şeklinde yazmak gerekiyor.:)

Dil bilgisinde zayıf olduğum ortaya çıktı...

Kodlarınızın işi yarayacağı kesinleşti :)

Elinize sağlık,
.
 
Haluk Bey,
"kalemtraş" olarak yazılınca yukarıdaki 5. mesajımdaki 3. maddeye göre kod aslında doğru işlem yapıyor.
"kalemtıraş" olarak yazılınca doğru heceye ayırıyor. Kelimenin yazılışında "ı" harfi de var.

Sayın leumruk,
Kodun ulaştığı sonucu açılan bir pencereye değil de herhangi bir hücreye yazdırabilir miyiz?
 
Ama, tespitiniz doğru elektrik, yeşilimtırak gibi kelimlerede sorun var. Onunla da uygun bir zaman diliminde ilgileneceğim.
 
Merhaba.

Ben de bir şey söyleyeyim.
-- Heceleme işlemiyle ilgili farklı yapıdaki kelimelerle denemelere devam etmek lazım.
-- Bir de sanırım noktalama işaretlerini temizlemek gerekecek.

Ayrıca; kod'un sonuna End Sub satırından önce aşağıdaki satırları da eklersek, A1'deki cümleyi,
B1'den itibaren sağa doğru herbir kelime bir hücrede olmak üzere hecelere ayrılmış olarak sayfada görüntülemiş oluruz.
.
Kod:
[B1] = Replace(Replace(Mid(StrReverse(hece), 1, Len(hece) - 1), " -", " "), "- ", " ")
[B1].TextToColumns Destination:=[B1], Space:=True
Cells.EntireColumn.AutoFit
 
TDK,
Batı kökenli kelimeler, Türkçenin hece yapısına göre hecelere ayrılır: band-rol, kont-rol, port-re, prog-ram, sant-ral, sürp-riz, tund-ra, volf-ram vb.

Bu açıklamaya göre kodlarda sorun görünmüyor. Tespit edebildiğim plan, tren gibi kelimelerde sorun var. Sizin de tespit edebildiğiniz kelimeler varsa belirtin, kodlamayı ona göre yapayım.
 
Hoca'm,
"yeşilimtırak" doğru ayrılıyor.
"maatteessüf(ne yazık ki)" gibi ilginç yapıdaki bir kelime de doğru ayrılıyor.

Türkçede olmayan 4 sessiz harfin yan yana olma durumu yabancı dillerde var.
Rusça "lekarstvo(ilaç)" kelimesi mesela. Programınız le-karst-vo diye ayırdı ama doğruluğu konusunda emin değiliz(Mantık olarak bence doğru ayrılıyor.).
TDK 3 ünsüz için açıklama yapmış, yabancı diller de Türkçe kelimelerdeki gibi ayrılır demiş.
Dört sessizin yan yana geldiği yabancı kelimelerle ilgili bir açık kapı kalmış.
katki@tdk.gov.tr adresine yazayım bir. Cevabı uzun sürebiliyor.
 
"tren" ve "plan" kelimeleri büyük harfle yazılınca doğru ayrılıyor.
Kodlar büyük ve küçük harfi önemsiyor mu?
 
traktör, plan, tren, spor, stil vb. kelimeler için şöyle bir şey düşünülebilir:
1. Türkçede başta çift ünsüz olmayacağına göre kelime yabancı.
2. Bu durumda çift ünsüzle başlayan sonra bir ünlü bir ünsüz ile devam eden kelimelerde ilk dört harfi bir hece olarak tanıtmak sorunu çözebilir.
Önceki mesajımda büyük harflerden bahsetmiştim. Programın tamamı büyük olan hiçbir kelimeyi ayırmadığını şimdi fark ettim, belirteyim dedim.

İyi geceler dileklerimle.
 
Son düzenleme:
Geri
Üst