Elimizde başka bir ortamda aldığımız ya da birden fazla kullanıcının kullanımına açık olan veya standart bir şablon kullanıldığı için değiştirmemizin mümkün olmadığı, aralarında boşluklar olan bir tablo olduğunu varsayalım. Bu tablodaki değerleri, aralarından boşluk olmadan nasıl farklı bir tabloya çekebiliriz bir bakalım.

1. Hazırlık ve Örnek Tablo

Ben bu örnek için aşağıdaki gibi bir tablo kullanacağım. Buradaki değerleri RASTGELEARADA formülü kullanarak oluşturdum. Siz bunun gibi basit bir tablo oluşturabilir veya elinizdeki hazır verileri kullanabilirsiniz. Formülleri ise F2 hücresinden itibaren yazacağım. 

2. Uygulama

Boş satırları atlayabilmek adına benim önce hangi satırların veri içerdiğini bulmam gerekiyor. Bunun için ise önce tüm satırların bir listesini elde etmem gerek. Tabii ki SATIR işlevi ile bunu elde edebilirim:

=SATIR($D$3:$D$17)

Bu formül {2,3,4,5,6…} şeklide aralık içindeki her bir hücrenin satır değerini verecektir.

Sonrasında aralıktaki hangi hücrelerde değer var bunu bulmam gerek:

=($D$3:$D$17<>””)

Bu formül ile elimde {DOĞRU,DOĞRU,YANLIŞ,YANLIŞ,DOĞRU,…} gibi bir dizi olacak. Eğer ben satır değerlerini bulduğum değerleri bu değerlere bölersem:

=SATIR($D$3:$D$17)/($D$3:$D$17<>””)

Bu formül ile bir önce elde ettiğim dizindeki DOĞRU değerleri 1, YANLIŞ değerleri ise 0 olarak ele alınacak ve elimde {3,4,#BÖL0!,#BÖL0!,7,…} şeklinde bir dizi olacaktır. Excel’in bu dizi değerlerini işleyebilmesi için ya dizi formülü haline getirmemiz ya da İNDİS ile bu diziyi Excel’in işleyebileceği hale getirmemiz lazım. Ben ikinciyi kullanacağım:

=İNDİS(SATIR($D$3:$D$17)/($D$3:$D$17<>””);;)

Bu dizide dikkat ederseniz satır değerleri artan sıralamada, yani en küçükten en büyüğe sıralanmış. İkinci olarak aralarında hata değerleri var.

Şimdi her bir satırda bu dizindeki elemanların o satıra denk gelen elemanını, hata değerlerini dikkate almadan, çekmemiz gerek. Bunun için de her satırda değişen bir n sayısına ihtiyacım var. Bunu SATIRSAY işlevi ile yapabilirim:

=SATIRSAY($F$3:$F3)

Bu formülü F2 hücresine yazıp aşağıya doğru uzattığımda {1,2,3,…} gibi sıralı rakamlar elde edeceğim.

Şimdi satıra göre bir önceki dizideki elemanı çeken işlevi bu formül ile birleştirerek yapalım. Hataları dikkate almadan sadece değerleri TOPLAM işlevi ile yapabiliriz:

=TOPLAM(15;6;İNDİS(SATIR($D$3:$D$17)/($D$3:$D$17<>””);;);SATIRSAY($F$3:$F3))

Bu formülü aşağıya doğru uzattığınızda aşağıdaki gibi değerler içeren bir listeniz olacaktır.

Elimizde değer içeren hücrelerin satır numaraları olduğuna göre artık tek yapmamız gereken B3 hücresinden itibaren değerleri çekmek. Bunu İNDİS işlevi ile yapabiliriz:

=İNDİS($D$3:$D$17;TOPLAM(15; 6; İNDİS(SATIR($D$3:$D$17)/($D$3:$D$17<>””);;); SATIRSAY($F$3:$F3))-2;)

Bu formülde dikkat ederseniz -2 ifadesini göreceksiniz. Bunun nedeni indis ile D3:D17 aralığını seçtiğimden bu aralıktaki 1. elemanının karşısında TOPLAM formülünün döndürdüğü değer 3. Bunu 2 eksiltmez isem hatalı değer çekerim. Tabii siz bu İNDİS formülünde D1:D17 aralığını seçerseniz de bu hatanın önüne geçebilirsiniz. Buradaki 2 rakamı yerine SATIR($D$2) formülü yazarak tabloya eklemeler yapılması durumunda hata oluşmasını da engelleyebilirsiniz.

İlginizi Çekebilecek Diğer Yazılar
Etiketler: , , ,

Leave a Reply