Filling (Otomatik doldurma işlemleri)

Doldurma işlemleri üzerinde çok konuşmaya değer konular değildir ancak Excel 2013'le gelen efsanevi Flashfill özelliği ile konuşmaya değer hale geldi. O yüzden kısaca klasik doldurma işlemlerinden bahsedelim ve sonrasında Flashfill'e geçelim.

Aslında burda Fill menüsünden ziyade Options>Advanced sekmesindeki Edit Custom List'ten bahsetmek istiyorum. Zira Fill menüsünde çok kayda değer birşey yok, en azından ben hiç kullanmıyorum.
Bildiğiniz gibi bir hücreye Ocak yazıp sağa veya aşağı doğru kaydırdığınızda bu Şubat, Mart diye devam etmektedir. Bunun sebebi, ayların Excel'e bir Liste/Seri olarak tanıtılmış olmasıdır. Edit Custom List (Advanced sekmesinin en altına gitmeniz gerekiyor) butonuna bastığımızda bunu görebiliriz.

post-thumb

Biz de buraya kendi listemizi ekleyebiliriz. Bunu istersek manuel girişle veya hazırda bulunan bir listeyi import ederek yapabiliriz. Biz hazır listeyi import edelim. Diyelim ki kurumumuzun bölge isimlerine sık sık ihtiyaç duyuyoruz. Liste tanımlayarak bunları ikide bir bölge dosyasından almaktan kurtulmuş olacağız.

post-thumb

Bundan sonra bir hücreye Akdeniz yazıp aşağı/sağa sürüklersem sırayla Batı Karadeniz, Doğu Anadolu diye yazmaya başlayacak.
DIKKAT: Buraya sadece sayılardan oluşan bir liste girilemez. Mesela bu bölgelerin bölge kodlarını giremeyiz. Ayrıca Listeye girilen metinlerin toplam uzunluğu 255 karakter olmalıdır. Yani burya bölge isimleri belki sığacaktır ama şube isimlerinden bir liste yapmak pek olası görünmüyor.

Uzuuuunca bir listeniz var diyelim. Mesela Bir Ad Soyad listesi. Bunu Ad ve Soyad olarak ikiye bölmek istiyorsunuz.

post-thumb

Önünüzde birkaç seçenek var(Tabiki tek tek elle yazmayı bir seçenek olarak düşünmüyoruz :))
1. Bir formül yazıp bunu aşağı doğru çekmek.Bu yöntemin sakıncası 2 isimli kişilerde formülün karmaşıklaşmasıdır. Karmaşık metin formülleri için buraya tıklayınız.

  • İsim için:=LEFT(A2;FIND(" ";A2))
  • Soyisim için:=RIGHT(A2;LEN(A2)-FIND(" ";A2))

2.Bir UDF kullanmak(Bu en hızlı yöntemdir, ancak VBA bilmeyi gerektirir)

                        
                                Function kelimesec(hucre As Range, kaçıncı As Byte, Optional ayrac As String = " ")
                                    'normal bir cümlede ayrac boşluk olacğaı için ayracı girmeye gerek yok, zaten default olarak " " atadım.
                                    'ama mesela içeriği / ile ayrılmış bir hücre varsa 3.parametre / olarak girilir
                                    Dim kelimeler As Variant
                                    kelimeler = Split(hucre.Value2, ayrac)
                                    kelimesec = kelimeler(kaçıncı - 1)
                                End Function               
                        
                

3.Benim burada anlatacağım ise çok daha basit ve pratik bir yöntem:FlashFill(Excel 2013le birlikte aramıza katıldı)
Hemen baştan belirteyim, Flashfill'in otomatik çalışması için File>Options>Advanced>Editing options altında Automatically Flash Fill seçeneğinin işaretli olması lazım. Aksi halde manuel Flash Fill yapmanız gerkeir, ki bu da oldukça kolaydır.(Klavyeden Ctrl+E kısayolu ile veya Home Menüsü>Fill>Flash Fill komutu ile)
Şimdi yukardaki resimde B2 hücresine "Ali" yazalım. B2 hücresine gelip "V" harfine basar basmaz, otomatik flash fill yapılacağına dair aşağıdaki görüntü ortaya çıkar:

post-thumb

Enter'a basar basmaz da otomatik tamamlanır. Sonuç aşağıdaki gibi olacaktır:

post-thumb

Bu işlemin tersi için de yani farklı kolonlardaki isim ve soyisimi birleştirme işlemleri de aynı mantıkla yapılabilir.
FlashFill'in çalışma şekli şöyledir:Siz B2'ye Ali yazdığınız zaman, bunun etrafında içinde Ali olan bir hücre var mı diye bakıyor, bulursa bir desen(pattern) oluşturuyor ve bu deseni diğer hücrelere de uygular. Burda oluşturduğu desen şu: "Ali Korkmaz metni içinde Ali, metnin ilk kelimesidir, o yüzden uygulanmak istenen şey, her metnin ilk kelimesini almaktır."
Bazı karmaşık işlemler Flashfill ile yapılamıyor. Böyle durumlarda yine metin formüllerini uygulamanız gerekebilir.