Karışık bir liste halinde verilmiş metinleri formül kullanarak sıralamak durumunda kaldığımızı düşünelim. Bu yazımda böyle bir durumda kullanabileceğiniz bir formülü nasıl yazabileceğinizi göstermek istiyorum.

1. Hazırlık ve Örnek Tablo

Bu örnek için rastgele isimlerden oluşmuş bir liste kullanacağım. Aşağıdaki tablodaki isimleri kullanabilirsiniz. Ben tabloyu B2 hücresinden itibaren oluşturacağım ve formülleri de sırası ile C3 ve D3 hücrelerine yazacağım. 

Ad SoyadGiriş TarihiSicilBölümGörev
Hande Kılıç14.04.20102730ÜretimMüdür
Necmiye Çalışkan09.05.20103143SatışMüdür
Basri Dalgıç13.05.20103662FinansMüdür
Mehmet Kiraz14.04.20112532šretimMühendis
Ahmet Özhan15.04.20112249FinansMuhasebeci
Hasan Topçu24.03.20124967PlanlamaMühendis
Niyazi Yıldız11.06.20133953BakımBakım Şefi
Kenan Demirci13.07.20134386MuhasabeMüdür
Merve Meşhur24.07.20134205ÜretimMühendis
Zeynep Çığırtkan16.01.20152562BakımMühendis
Emin Nizami26.01.20153204PlanlamaMühendis
Berra Karaküp07.12.20152914SatışMühendis
Mustafa Demir24.10.20162855MuhasabeMuhasebeci
2. Uygulama
a. Metnin Sırasını Bulma

Metin değerlerini sıralayabilmek için bir yardımcı değere ihtiyacım var. Bunun içinde aradığım metnin, tüm liste içinde kaçıncı sırada olduğunu bulmam gerek.

Not: Burada kısa bir bilgi verme ihtiyacı doğdu, Excel harfleri değerlendirirken bu harfin ASCII karşılığı olan rakamı alır. Bu nedenler Excel’de A>45 gibi bir kıyaslama DOĞRU değerini döndürecektir çünkü A harfinin ASCII karşılığı 65 rakamıdır ve Excel bu kıyaslamayı (A=)65>45 şeklinde yapacaktır.

Metinleri kıyaslarken de aynı şekilde metni oluşturan her bir harfin ASCII değeri kıyaslanarak bir sıralama yapılır.

Aradığım metnin listedeki kaçıncı eleman olduğunu bulmak için bir kıyaslama yapmam ve ona eşit ve ondan daha küçük olan kaç tane metin olduğunu bulmam lazım. Bunu şöyle anlatabilirim örnek olarak formül 5 rakamını döndürsün, bu o metinden daha küçük 4 metin olduğunu ve kendisinin de 5. eleman olduğunu ifade edecektir.

Şimdi elimde bir şart olduğu, kıyaslama operatörü kullandığımda metin karakterlerinin rakama çevrildiğini dolayısı ile bir sayma işlemine ihtiyacım olduğunu bildiğime göre şarta göre sayma görevini yerine getiren EĞERSAY işlevini kullanarak:

=EĞERSAY($B$3:$B$15;”<=”&$B3)

metnin tam olarak kaçıncı sırada olduğunu bulabilirim. Bu formülü C3 hücresine yazıp aşağı doğru çoğalttığımda elimde her bir değerin sırasını gösteren bir liste oluşacaktır.

b. Metinden Birden Fazla Olması Durumu

Eğer listenizde aynı metinden birden fazla var ise bu durumda bu formül aynı rakamı döndüreceğinden sıkıntı yaşayabilirsiniz. Bu yüzden listenizin, formülü girdiğiniz satıra kadar olan kısmında aradığınız metinden kaç tane olduğunu da bularak bu formüle eklemeniz lazım. Bunu da yine EĞERSAY işlevi ile yapacağız:

=EĞERSAY($B$3:$B3;$B3)

Bu durumda ana formülümüzdeki “<=” ifadesini de “<” olarak değiştirmemiz lazım çünkü bir önceki formül ile metnin ortaya çıkış adetlerini de bulmuş oldum:

=EĞERSAY($B$3:$B$15;”<“&$B3)+EĞERSAY($B$3:$B3;$B3)

Yazının bundan sonraki kısmında ben listedeki her bir metinden tek bir  adet olduğunu varsayarak ilerleyeceğim. Eğer sizin listenizde aynı metinden birden fazla bulunuyor ise lütfen bir önceki adımdaki formülü değil bu formülü kullanın.

c. Sıralamaya Göre Sıralanmış Liste Oluşturma

İkinci aşamada bana her bir satırda artan sıralama ile 1, 2, 3,… değerlerin hangi satırda yer aldığını bulmam gerek. Her bir satırda artan bir değer elde etmek için SATIRSAY işlevini kullanacağım:

=SATIRSAY($D$3:$D3)

Bu işlevi D3 hücresine yazıp aşağıya doğru uzatırsanız bahsettiğim artan diziyi elde edersiniz. Bundan sonra ise bu rakamın C3:C15 aralığında hangi satırda olduğunu KAÇINCI işlevi ile bulmam gerek:

=KAÇINCI(SATIRSAY($D$3:$D3);$C$3:$C$15;0)

Bu formül ile 1. sırada olması gereken elemanın listede 5. sırada yer aldığını bulurum. Artık yapmam gereken İNDİS ile B sütununda denk gelen elemanı çekmek:

=İNDİS($B$3:$B$15;KAÇINCI(SATIRSAY($D$3:$D3);$C$3:$C$15;0);)

Bu formülü D3 hücresine yazarak aşağıya doğru uzattığımda sıralı listemi elde etmiş olurum.

d. Dizi Formülü İle

Eğer yardımcı bir sütun kullanmak istemiyorsanız bu durumda bir dizi formülü yazmanız gerek. Buradaki dizi de karşılaştırma formülü. Eğer bu formüldeki karşılaştırma kısmını bir aralık olarak girersek bir dizi formülü elde etmiş oluruz:

=EĞERSAY($B$3:$B$15;”<=”&$B$3:$B$15)

Bu formül ile aralıktaki tüm değerler aynı aralıktaki tüm değerler ile kıyaslanır ve küçük eşit olan rakamlar bir dizi olarak geri döndürülür. Bu işlevin sonucunu işleyebilmek için İNDİS işlevi ile birleştirmemiz lazım:

=İNDİS(EĞERSAY($B$3:$B$15;”<=”&$B$3:$B$15);;)

Bu bulduğum dizi hangi elemanın hangi satırda olduğunu gösteren dizi. Sonrasında yukarıda sıralama esnasında kullandığım formüle bu yazdığım formülü ekleyeceğim:

=İNDİS($B$3:$B$15;KAÇINCI(SATIRSAY($B$3:$B3);İNDİS(EĞERSAY($B$3:$B$15;”<=”&$B$3:$B$15);;);0);)

Formülü yazarak aşağıya doğru uzattığınızda bir önceki formül ile aynı sonucu alırsınız. Eğer aynı metinden birden fazla var ise formülü aşağıdaki şekilde değiştirmeniz gerek:

=İNDİS($B$3:$B$15;KAÇINCI(SATIRSAY($G$3:$G3);İNDİS(EĞERSAY($B$3:$B$15;”<“&$B$3:$B$15);;) +EĞERSAY($B$3:$B3;$B3);0);)

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

Leave a Reply