Konu : 1b - Kızlık Soyadını Bulma

Sadece bilgisayar programcısı için değil, "analitik düşünebilen" ve "office programlarına hakim" kriterleriniz varsa güzel bir soru. Aday bu soruya "internetten 5 dakikada bulup halledebilirim" cevabı veriyorsa onun uyanık olduğunu anlarsınız da "internete girmeden sen ne kadar zamanda yaparsın" diye sorduğunuzda adayın gerçek bilgisi ortaya çıkar. İş hayatında internette bulamayacağınız veya bulması yapılmasından çok daha uzun sürecek durumlar karşısında elemanın çözmesi gereken sorunlar çıkabilir.

Macro içermeyen dosyayı buradan indirip inceleyebilirsiniz.
Macro ile yapılan çözümü buradan indirip inceleyebilirsiniz.

Örnek olarak verilen "Hülya Koçyiğit Soydan"'ı "Hülya Soydan" ve "Koçyiğit" olarak zihinden hemen nasıl bulduğumuza bakalım. En sonda yer alan kelime eşinin ondan bir önceki de kızlık soyadıdır. Kızlık soyadından önceki(ler) de ismidir. İşin analitik kısmı bitti, geldik teknik kısıma. Eğer Microsoft Excel kursunda YERİNEKOY (SUBSTITUTE) anlatılırken ne işime yarayacak bu fonksiyon dediyseniz işiniz biraz zor. Çünkü bu fonksiyonu iki farklı şekilde kullanacağız.
YERİNEKOY komutu bir metin içindeki karakter(ler)i başka bir karakter(ler)e çevirir. =YERİNEKOY("BAK YEŞİL YEŞİL","YEŞİL","MAVİ") formülü bütün "YEŞİL"'leri "MAVİ" yaparak "BAK MAVİ MAVİ" değerini verir. Formüle 4.cü parametre olarak bir sayı eklenirse sadece o sayının sırasındaki metin çevrilir.
=YERİNEKOY("BAK YEŞİL YEŞİL","YEŞİL","MAVİ",1) formülü "BAK MAVİ YEŞİL"
=YERİNEKOY("BAK YEŞİL YEŞİL","YEŞİL","MAVİ",2) formülü "BAK YEŞİL MAVİ"
değerini verir. YERİNEKOY (SUBSTITUTE) formülüne ek olarak UZUNLUK (LEN) ve BUL(FIND) formüllerini de kullanarak çözüm yapılabilir diye ipucu verilse çözüm dosyasına bakmadan veya yazının devamını okumadan çözmeyi dener misiniz?
Excel'de bir metin içindeki bir karakter sayısını bulan komut yok. Burada bir kurnazlık yapmak gerek. YERİNEKOY komutuyla " " şeklinde gösterebileceğimiz boşluk karakterini "" (çift tırnak araya boşluk konulmadan arka arkaya yazılıyor) şeklinde gösterebileceğimiz boş değere (NULL) çevirirsek "HÜLYA KOÇYİĞİT SOYDAN" "HÜLYAKOÇYİĞİTSOYDAN" haline gelir. Boşluklu değerin uzunluğu (sahip olduğu karakter sayısı) 21 ilen boşluksuz değerin uzunluğu 19 olur. 21'den 19'u çıkarırsak 2 tane boşluk karakteri olduğunu buluruz. Son boşluktan sonraki metin eşinin soyadı, son boşluktan bir önceki boşluk ile son boşluk arasındaki metin kızlık soyadıdır.
B8 hücresinde HÜLYA KOÇYİĞİT SOYDAN metni var. C8'e biraz kısa yoldan boşluk içeren metin ile boşluk içermeyen metnin uzunluklarının farkını bulacak komut yazdım. 2 değeri elde edildi. D8'deki formülde B8'deki metinde " " (Boşluk) karakterine 2.ci kez rastladığında onu "]" (Kapat köşeli parantez)'e çevir komutunu yazdım. E8 hücresinde D8 hücresinde "]" eklenmiş metnin C8 hücresindeki sayısının 1 eksiğindeki sırada ortaya çıkan " " karakterini "[" (Aç köşeli parantez)'e çevir komutu var. Böylece E8'deki metin
"HÜLYA[KOÇYİĞİT]SOYDAN" haline geldi. BUL komutu ile "["'nin 6.cı, "]"'nin 15.ci karakter olduğunu bulacak formülleri F8 ve G8'e yazdırıyorum. H8 ve I8'e de istenilen değerleri yazdıracak formüller çok basit hale geliyor.
Macro ile yapılan çözümde metinde son karakterden başa doğru gidilerek 2.ci boşluk karakterine rastlandığında kızlık soyadı ve ad,soyad bulunuyor.

Yapım aşamasında. Test yayını. Her girişinizde farklı görebilirsiniz. Linkler çalışmayabilir.

Zor olan bir insanla anlaşmaktır.
Bir bilgisayar sizi asla yanlış anlamaz.