Ardışık En Fazla Tekrarlanan Harf Grubu

Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Merhabalar,
Zaman zaman kendimi geliştirmek için farklı yollar arayışı içinde oluyorum.
http://www.excel.web.tr/f14/excel-ardy-yk-t156361.html bu konuda soru soran Sn. zdckl'ın sorusunu biraz daha ileri götürerek söyle bir soru yöneltmek istiyorum.
Ben zaman zaman düşündüm ama şimdilik cevap bulamadım.

Soru : İstediğimiz harf grubunun en fazla tekrar sayısını bulmak.
Harf grubu : A B C D E (hepsi ayrı ayrı düşününülmesi gerekir)
Hücre içerisindeki karışık harf grupları;
  • ABTUCDE - sonuç : 3
  • ZZZIHABCDKGF - sonuç : 4
  • ABCDEKKKKKLLLLLABCDEEEE - sonuç : 8
Anlaşılmayan bir yer olursa biraz daha örnek yada açıklama yazabilirim.

Not: Önceliğimiz formüller ile yapmaktır.
Saygılar,
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Harfleri arasında Türkçe karakter olacak mı? Ü, İ, Ğ gibi
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Tabi klavyede gördüğünüz her harf olabilir.
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Sayın bzace
Formülle biraz zor görünüyor bana. Harfler sadece İngilizce ve büyük harflerden oluşuyorsa aşağıdaki fonksiyon sonuç verir. Eğer Türkçe karakter, küçük harf, sayı ve başka karakterlerde olacaksa başka çareler düşünmek lazım (Asc numaraları yerine her karakter için ardışık yeni numaralar tanımlamak gibi)
Kod:
Function ardışık(harfler)
say = 1
For i = 2 To Len(harfler)
If Asc(Mid(harfler, i, 1)) = Asc(Mid(harfler, i - 1, 1)) Or Asc(Mid(harfler, i, 1)) = Asc(Mid(harfler, i - 1, 1)) + 1 Then
say = say + 1
X = X & "#" & say
Else
say = 1
X = X & "#" & say
End If
Next
qq = Mid(X, 2)
Q = Split(qq, "#")
ardı = 0
For e = 0 To UBound(Q)
If ardı < Q(e) * 1 Then
ardı = Q(e) * 1
Else
ardı = ardı
End If
Next
ardışık = ardı
End Function
 
Son düzenleme:
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Ali Bey, teşekkürler.
Şimdilik amacımız ilk olarak sadece büyük harf olsun. Bu sorunu aşarsak sayı , karakter yada küçük harf olayını eminimki hallederiz.

İşlerden dolayı pek zamanım yok, zaman ayırabildiğim zaman üzerine biraz daha düşeceğim.

Saygılar,
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Yukardaki kodları düzelttim.
Kurduğunuz mantığa göre 3. Örnekteki sonuç 10 olması gerekiyor.
ABCDEKKKKKLLLLLABCDEEEE
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Sonucun on çıkmaması lazım. Siz K ve L harflerini sayıyorsunuz değil mi ?
Bizim istediğimiz;
Harf grubu : A B C D E (hepsi ayrı ayrı düşününülmesi gerekir)
metin içerisinde bu harflerden herhangi biride olabilir hepside olabilir.

Farklı bir örnek vereyim.
AGGHJUBBBORUEDDDDDC - sonuç : 7
 
Son düzenleme:
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Sayın bzace
Herhalde aşağıdaki kodlar istediğiniz sonucu verir
Kod:
Function ardışık(harfler)
say = 0
For i = 1 To Len(harfler)
If Asc(Mid(harfler, i, 1)) > 64 And 70 > Asc(Mid(harfler, i, 1)) Then
say = say + 1

X = X & "#" & say
Else
say = 0
X = X & "#" & say
End If
Next
qq = Mid(X, 2)
Q = Split(qq, "#")
ardı = 0
For e = 0 To UBound(Q)
If ardı < Q(e) * 1 Then
ardı = Q(e) * 1
Else
ardı = ardı
End If
Next
ardışık = ardı
End Function
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Ali Bey,
Öncelikle teşekkürler.Bu kalıp uygun sonuçları döndürüyor.
Bu sadece bir örnekti verdiğiniz örneği biraz daha esnek hale getirmek gerekir.

Harf grubunu A G Z R L olduğunu düşünürsek (yada farklı harfler) sürekli oynama yapmak gerekebilir.
Son olarak verdiğiniz KTF'nin kullanımını yazarsanız merak eden kişiler denemiş olur.
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Sayın bzace
:) Baştan soruyu öyle sorsaydın keşke.
Dediğiniz de elbette yapıla bilinir ama siz en iyisi konuyu kafanızda sonuçlandırın. Bir defada çözelim.
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Soruyu anlaşılması kolay olsun diye öyle sormuştum. Sadece iki yada üç harf olacak ve bunlar sabit ise sorun daha kolay olacaktır.

Bu gibi durumlar için her zaman olasılıklar vardır. ;) Bu soru dediğim gibi kendimi geliştirmek için aklıma gelen bir düşüncedir. Sn. zdckl'nın sorusuna tekrar baktığımda aklıma gelmişti.

Bu iş formüller ile oldukça basit olduğunu düşünüyorum ama mantığı kuramadım.
Bu arada affınıza sığınarak KTF'nin kullanılışı;
Kod:
=ardışık(A1)
İyi geceler;)
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Sayın bzace
Harf grubunu da değişkene atadım.
Kod:
Function ardışık(harfler, aranacak)
say = 0
For i = 1 To Len(harfler)
If InStr(aranacak, Mid(harfler, i, 1)) > 0 Then
say = say + 1
X = X & "#" & say
Else
say = 0
X = X & "#" & say
End If
Next
qq = Mid(X, 2)
Q = Split(qq, "#")
ardı = 0
For e = 0 To UBound(Q)
If ardı < Q(e) * 1 Then
ardı = Q(e) * 1
Else
ardı = ardı
End If
Next
ardışık = ardı
End Function
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Ali Bey,
E2 hücresine yazmış olduğunu ABCDEKKKKKLLLLLABCDEEEE verisini değiştirerek dener misiniz?
ABCDEKKKKKLLLLLABBCDEEEE yada ABCDEKKKKKLLLLLABYCDEEEE ilave yerler kırmızı alanlardır.
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Sayın bzace
ABCDEKKKKKLLLLLABYCDEEEE için 6 diğer örnek ise 9 değerini veriyor.
Not; A2deki formülü boş hücre çıkana kadar aşağı doğru kopyalayın. diğer sütunlara da aynısını uygulayın Eğer kısa bir harf dizisi girerseniz A sütununda formüllü ama boş satırları silin.
Yada
C3 hücresindeki formülü aşağıdaki gibi değiştirin.
Kod:
=EĞER(A3="";"";EĞER(B2=1;C2+B3;0))
 
Son düzenleme:
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Dikkatsizliğim için kusura bakmayın.
İstediğimizi tam yapacak formülü oluşturduk. (tüm kontrolleri yapamadım)
Küçük büyük harfe karşı duyarlıdır.
Kod:
=MAK(SIKLIK(SATIR(1:38);
  EHATA(MBUL(PARÇAAL(A1&YİNELE(1;38);
    SATIR(1:38);1);"ABCDE"))*SATIR(1:38))-1)
[COLOR="Blue"]Formül dizi formülüdür.CTRL+SHIFT+ENTER ile tamamlayınız.[/COLOR]
Not: Metin uzunluğuna göre 38 sayısını çoğaltınız.
 
Son düzenleme:
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Sayın bzace
Harika olmuş bende bir şeyler öğrenmiş oldum. 38 sayısı Metin Uzunluğundan büyük herhangi bir sayı oluyor herhalde.
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Ali Bey,
Benim için 38 sayısı Kayseri'yi temsil ediyor. Excel için hücre içerisindeki karakter sayısını temsil ediyor.
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
Karakter sayısı ile eşit olursa 1 eksik sonuç veriyor, en az 1 fazla olunca doğru sonuç veriyor.
 
Üst