Kelime listeleme dosyamdaki hatalar

Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Merhabalar,

Severek kullandığım, kelime listeleme dosyam var. Fakat makrolarda bir düzeltme yapmak gerekiyor.

Listeye dökerken bazı harfleri yutuyor.

Parantez açma işaretini listeye dökerken, parantez kapama işaretini dökmüyor.

Bunun gibi minik hatalar mevcuttur.

Sorunu daha net görebilmek için, B2 ve aşağısını sildim.

Metinin tamamının dökümünü görmek için, örnek metinin tamamı kopyalanıp B sütununa yapıştırılıp, görülebilir.

Örnek dosya ve örnek metin ektedir.


Sayın uzmanlarıma arz ederim.







 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Burada yapılmak istenen nedir?
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Burada yapılmak istenen nedir?
Sayın Uzmanım, çok hoşuma giden bu dosya, herhangi bir yazı metnini, Ctrl+C , Ctrl+V yaparak B sütununa yapıştırdıktan sonra, bütün kelimelerin, tek tek A sütununa dökülmesini sağlıyor.

Hangi kelimeler çok kullanılmış, hangi kelimeler az kullanılmış, hatalı yazılan kelimeler var mı vb
bunun gibi şeyleri kontrol etmemi sağlıyor.

Yani kısaca, yazıdaki kelimelerin tamamını, A sütununa sırayla döküyor

Fakat bu örnek dosya bazı kelimelerin son karakterlerini yutuyor nedense

Arz ederim. ????
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Bir minik ilave yapayım, kopyalanan metni

B1 hücresinin içine yapıştırmıyoruz

direkt B1 hücresinin üzerine yapıştırıyoruz.

Bütün yazılar B sütunundaki hücrelere yapışmış oluyor.

Ondan sonra düğmeye basıyoruz
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Aşağıdaki gibi ufak bir kod işinizi görür mü?

Kod:
Sub Test()
    myArr = Split(Application.Trim(Range("B1").Text), " ")
    Range("A2").Resize(UBound(myArr) + 1, 1) = Application.Transpose(myArr)
End Sub
.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Aşağıdaki gibi ufak bir kod işinizi görür mü?

Kod:
Sub Test()
    myArr = Split(Application.Trim(Range("B1").Text), " ")
    Range("A2").Resize(UBound(myArr) + 1, 1) = Application.Transpose(myArr)
End Sub
.
Uzmanım hemen deneyip
Size arz edeceğim
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Aşağıdaki gibi ufak bir kod işinizi görür mü?

Kod:
Sub Test()
    myArr = Split(Application.Trim(Range("B1").Text), " ")
    Range("A2").Resize(UBound(myArr) + 1, 1) = Application.Transpose(myArr)
End Sub
.
Sayın Haluk uzmanım, önce ilgnize teşekkür ederim ???? çok sevindim

Fakat bu kodlar olmadı.

Sebepleri

Kodlar sadece B1 hücresini okuyor. B2 ve aşağısını okumuyor. (Görmüyor)

Metni, B1 hücresinin içine kopyaladığımda ise, A sütununa kelimelerin tamamını dökmüyor. Bir kısmını döküyor sadece, yarıda kesiliyor

Ayrıca A sütununda her hücrede bir kelime dökülmüş olması gerekirken,
A sütununda bir çok hücrede birden fazla kelime görünüyor. Bu zaten işi tamamen bozuyor.

Yani olmadı maalesef. Ama kodların başlangıç amacı doğruydu.

Amacım, bir yazı parçasındaki kelimeleri, A sütununa yukardan aşağıya dökmek.
Zaten döküldünten sonra gerisi kolay. Noktaları virgülleri gereksiz boşluk vs ctrl-h ile silerim.

Arz ederim

(Örnekteki yazı metni, “eğitimde rehberlik ve psikolojik danışma” isimli bir kitaptan alıntıdır)
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Benim yüklediğim örnek dosyada, düzeltmeler yapılabilir, ve hatasız ve eksiksiz olarak kelimeleri A sütununa dökebilirsek, sorun çözülmüş demektir. Dosya çok kullanışlı olur.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kodlar,sadece B1 hücresine yazılanları A sütununda kelime kelime eksiksiz listeliyor..... 5 No'lu mesajda yer alan kodu içeren örnek dosya ektedir.

Siz ilave olarak; B2 - B3 - B4 hücrelerine yazılanları yine A sütununda en son boş hücreden itibaren listelensin mi istiyorsunuz?

.
 

Ekli dosyalar

Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Uzmanım ekli dosyayı indiremedim, ama ben verdiğiniz kodu denediğimde, B1 hücresinin içindeki kelimelerin tamamı listelenmemişti.
Bir kısmı listelenmişti.
Ve bazı kelimeler A sütununda, bir hücrenin içine “birden fazla kelime” olarak aktarılmıştı. Dolayısı ile, bir hücreye birden fazla kelimenin listelenmesi, maalesef işi bozuyor.

Fakat tekrar deneyeceğim
&&&&

Uzmanım olmuyor, yazdıklarımı göndermeden önce tekrar denedim. 7 nolu mesajda arz ettiğim sorunlar vardır.

Kelimelerin tamamı listelenmiyor, yarıda kalıyor.
(Örnek metni B1 e yapıştırıp deneyebilirsiniz)

A sütununda Bazı hücrelerin içine birden fazla kelime aktarılıyor. Oysa bir hücreye bir kelime aktarılması lazım.

Bir husus ta şudur uzmanım

Bildiğim kadarıyla bir hücrenin harf (karakter) kapasitesi olması lazım.
Eğer yazı parçasını, tek bir hücreye değil de, B sütunun tamamına (ilk mesajımdaki örnek dosyada olduğu gibi) yapıştırabilirsek; o zaman, çok uzun yazı parçalarını da bu şekilde işlemiş olabileceğim.

Zira tek bir hücreye bağımlı kalırsak, hep belli büyüklükteki yazıları inceleyebileceğim.

İlk gönderdiğim dosyadaki kodları düzeltebilsek, bu iş olacak ????

Arz ederim
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sorun, sizin yeni eklediğiniz metindeki LineFeed karakterinden kaynaklanıyor.

Ekli dosyada, A321 hücresine kadar kelimeler listelenmektedir.

Dosyanın harici linki:



.
 

Ekli dosyalar

Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Uzmanım sizin harici yere yüklediğiniz dosyayı çalıştırınca da yine 119, satıra kadar listeledi. Ve 119. satırdaki ”eğitimin” kelimesi “eğ” olarak kaldı.

Yani sizin dediğiniz gibi 321. satıra kadar listelenmedi maalesef. 119 da kaldı.

Acaba ben excel 2002 kullanıyorum. Bundan dolayı olabilir mi farklılık?
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Muhtemelen versiyon farkidir...

Ben, kullandigim 2010 versiyonuna eski diyordum ama, sizinki bayagi eskiymis...
.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Uzmanım 2007 office de denedim geçici olarak,
Evet, 321 e kadar kelimeleri hatasız listeliyor.

Demek ki 2003 öncesi kullandığım içinmiş sorun.

Peki son bir sorum daha olacak size

Benim ilk mesajımdaki örnek dosyanın kodlarını size zahmet olmazsa onarabilir misiniz? Eğer onarabilirseniz, iki dosyayı da elimin altında tutmak istiyorum.

Tıpkı sizin oluşturduğunuz dosyanın yaptığı işin aynısını yapacak.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Bir de uzmanım yukarda linefeed karakterinden bahsetmiştiniz.
Bu karakter hangisidir? Nasıl yok edebilirm?

Çünkü eğer bu karakteri yok etmezsem, bu sefer de A281 e kadar listeliyor.

Ama sizin gönderdiğinizde ise A321 e kadar

Demek ki bu karakteri yok etmek gerekiyor, sağlıklı listeleme yapabilmek için.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Sayın Haluk üstadın kodlarından yararlanarak şöyle bir kod oluşturdum. Kod b sütunundaki dolu hücrelerin hepsini ayrıştırıyor. Ayrıca hücre içindeki . , : ; ? ( ) ve ! karakterleri iptal ediyor ve son olarak da A sütunundaki yinelenenleri kaldırıyor:

PHP:
Sub kelimelendir()
    sonA = Cells(Rows.Count, "A").End(3).Row
    sonB = Cells(Rows.Count, "B").End(3).Row
    Range("A1:A" & sonA).ClearContents
    For i = 1 To sonB
        veri = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Cells(i, "B"), ".", " "), ",", " "), _
                    ":", " "), ";", " "), "?", " "), "(", " "), ")", " "), "!", " ")
        myText = Replace(Application.Trim(veri), vbLf, " ")
        myArr = Split(myText, " ")
        yeni = Cells(Rows.Count, "A").End(3).Row + 1
        If [A1] = "" Then yeni = 1
        Cells(yeni, "A").Resize(UBound(myArr) + 1, 1) = Application.Transpose(myArr)
    Next
    ensonA = Cells(Rows.Count, "B").End(3).Row
    Range("$A$1:$A$" & ensonA).RemoveDuplicates Columns:=1, Header:=xlNo
    Range("A1").Select
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Belki 2002 versiyonunda aşağıdaki kod A321 hücresine kadar listeleyebilir, bilmiyorum...

Kod:
Sub Test2()
    myText = Replace(Application.Trim(Range("B1").Text), vbLf, " ")
    myArr = Split(myText, " ")

    For i = LBound(myArr) To UBound(myArr)
        Cells(i + 2, 1) = myArr(i)
    Next
End Sub
.
 
Son düzenleme:
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Sayın Haluk üstadın kodlarından yararlanarak şöyle bir kod oluşturdum. Kod b sütunundaki dolu hücrelerin hepsini ayrıştırıyor. Ayrıca hücre içindeki . , : ; ? ( ) ve ! karakterleri iptal ediyor ve son olarak da A sütunundaki yinelenenleri kaldırıyor:

PHP:
Sub kelimelendir()
    sonA = Cells(Rows.Count, "A").End(3).Row
    sonB = Cells(Rows.Count, "B").End(3).Row
    Range("A1:A" & sonA).ClearContents
    For i = 1 To sonB
        veri = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Cells(i, "B"), ".", " "), ",", " "), _
                    ":", " "), ";", " "), "?", " "), "(", " "), ")", " "), "!", " ")
        myText = Replace(Application.Trim(veri), vbLf, " ")
        myArr = Split(myText, " ")
        yeni = Cells(Rows.Count, "A").End(3).Row + 1
        If [A1] = "" Then yeni = 1
        Cells(yeni, "A").Resize(UBound(myArr) + 1, 1) = Application.Transpose(myArr)
    Next
    ensonA = Cells(Rows.Count, "B").End(3).Row
    Range("$A$1:$A$" & ensonA).RemoveDuplicates Columns:=1, Header:=xlNo
    Range("A1").Select
End Sub

Yusuf uzmanım emeğinize sağlık, eğer size zahmet olmazsa “yinelenenleri kaldırma“ özelliği içermeyen kodları da oluşturabilir misiniz?
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Belki 2003 versiyonunda aşağıdaki kod A321 hücresine kadar listeleyebilir, bilmiyorum...

Kod:
Sub Test2()
    myText = Replace(Application.Trim(Range("B1").Text), vbLf, " ")
    myArr = Split(myText, " ")

    For i = LBound(myArr) To UBound(myArr)
        Cells(i + 2, 1) = myArr(i)
    Next
End Sub
.
Haluk uzmanım , 2007 de bu kodlarda sorunsuz çalıştı.
 
Üst