Düşeyara(Vlookup) Hakkında Her Şey
Hangi seviyede olursa olsun herkesin en çok ihtiyaç duyacağı fonksiyondur. Fonksiyonun temel amacı veri eşleştirmedir. Yani bir veri içinde yer alan bilgilerden, eşleşme aranır.
Fonksiyon 4 parametreden oluşur. Birinci parametre fonksiyonun girdisi olan aranan değerdir. İkinci parametre ise verilerin yer aldığı tablo dizinidir. Üçüncü parametreye, döndürülmek (getirilmek) istenen değerin seçili tablo dizisi içinde kaçıncı sıradaki sütunda yer aldığı bilgisi girilir. Son parametreye ise 0 ya da 1 yazılır. 0 yazılırsa, tam eşleşme bul anlamına gelir. Yazılımsal karşılık olarak 0, FALSE; 1, TRUE anlamındadır.
Aranan değerimiz D1 hücresinde yer aldığı için parametre olarak o hücreyi seçmeliyiz. Verilerimiz ise A2 ve B7 aralığında yer almaktadır. Bu nedenle tablo dizisi olarak bu hücreler belirlenmelidir.
A ve B sütunu olmak üzere 2 sütun veri seçildi. Sonuç olarak getirmek istediğimiz veri ikinci sütunda yer aldığı için Sütun_indis_sayısı olarak 2 yazıldı. Birebir tam eşleşme aradığımız içinse, Aralık_bak kısmı 0 olarak belirtildi.
DÜŞEYARA fonksiyonun altın kuralları;
- Aranan değer seçili tablo dizisinin en solunda yani ilk sütununda yer almalıdır. Örnekte görüldüğü üzere şehir ismi aranan değerdir ve bu değer seçili tablo dizisinin en solunda yer almaktadır. Yani plakadan şehir ismi Düşeyara fonksiyonu ile bulunamaz. Bunun için farklı yöntemler vardır.(Bknz. İndis kaçıncı, çaprazara)
- Aranan değer ile değerin yer aldığı tablo dizini içindeki verinin aynı olması yetmez. Veri tipleri de aynı olmalıdır.
- Düşeyara, her zaman yukarıdan aşağıya doğru. Bulduğu ilk değeri getirir.
- Her zaman sağa doğru arama yapar. Sol tarafta kalan veriyi getiremez. Aranan değer kısmına seçilen ya da yazılan değerin, ham tablo içinde yer aldığı sütundan itibaren olmak üzere tablo dizisi (Table Array) seçilmek zorundadır.
- İstisnai durumlar hariç olmak üzere son parametre genelde 0 olarak belirlenir.
Son parametrenin yani Aralık_bak değerinin 1 olabileceği durumlar, tam eşleşme yerine yakın eşleşme arandığı durumlardır.
F2 hücresine uygulanan formül; =DÜŞEYARA(E2;$A$2:$B$8;2;1)
A ve B kolonlarında bir prim tablosu var. Buradaki sayılara denk gelen primi sağ tarafta yer alan tablonun son sütununa getirmek gerekiyor. Ancak sağ taraftaki tabloda yer alan satış tutarları doğal olarak tam sayı değil ve küsuratları var. Bunun gibi tam eşleşme olmayan durumlarda son parametre yani Aralık_bak, 1 olmalıdır.
DÜŞEYARA fonksiyon’unu diğer tüm fonksiyonlarla birlikte iç içe kullanabiliriz. Ayrıca kendi başına da çok çeşitli kullanım alanları vardır. Örneğin iki farklı tabloyu kıyaslayabiliriz. Birinde olan ve diğerinde olmayanları bu fonksiyon ile bulabiliriz.
Soldaki tek sütunluk tablo eğitim talebinde bulunanların listesi. Sağdaki tablo ise eğitime katılım gösterenlerin listesidir. Amacımız, talep edenlerden kimlerin eğitime katılmadığını tespit etmektir. Bu kısıtlı tabloda belki gözle takip ederek bulunabilir ancak binlerce satırlık benzer verilerde manuel yöntem mümkün değildir.
Örnekte de görüldüğü üzere tek kolonluk tablo dizilerinde de Düşeyara fonksiyonu kullanılabiliyor. Tek kolonluk veriler olduğu için Sütun_indis_sayısı parametresine 1 yazılması gerekiyor.
Joker (Wildcard) eşleşmesi de mümkündür.
Örnekte görüldüğü üzere umut isminin başında ve sonunda çarpı işareti yer almaktadır. Bu şekilde arama yapmak da mümkündür.
Joker karakterin kullanımı;
- *Mustafa şeklindeyse, başında başka bir metin var ancak Mustafa ile biten demektir.
- Mustafa* şeklindeyse, Mustafa ile başlıyor ancak devamında başka metin olabilir demektir.
- *Mustafa* şeklindeyse, metnin başında ve sonunda Mustafa’dan başka metinler olabilir demektir.
Bu kullanım çoğu yazılım dili için aynıdır.
Sütun_indis_sayısı parametresinin dinamik kullanımı;
Birden fazla hücreye fonksiyon uygulanacaksa, tek tek parametre girmek zaman kaybına yol açacaktır. Örnekte B17 hücresine aşağıdaki formül uygulanmış ve sağa doğru çekilmiştir.
=DÜŞEYARA($A$17;$A$2:$E$13;B15;0)
Fonksiyonlar sağa, aşağı çekilirken sabitleme yapmak gerekmektedir. Henüz o konuya gelmediğimiz için formülü anlamakta zorlanabilirsiniz. Ancak sabitleme bölümünü tamamladığınızda parçalar birleşecektir.
Düşeyara içinde Dizi yapısı kullanarak çoklu sonuç getirmek;
B15 hücresine yazılan formül =DÜŞEYARA(A15;A2:E11;{2;3;4;5};0)
Süslü parantez içinde sonuç olarak getirilmesi istenen kolonların sıra numarası girilmiştir. Tek bir kolon numarasını teker teker tüm alanlara girmek yerine bu şekilde dizi yapısı kurularak çoklu sonuç döndürülebilmektedir. Farklı sekmelerde de olsa aynı yapı çalışmaktadır.
Peki böyle bir dizi yapısı ile dikey sonuç döndürmek mümkün müdür? Bu sorunun cevabı, evet!
B14 hücresine yazılan formül =DEVRİK_DÖNÜŞÜM(DÜŞEYARA(B13;A2:E11;{2;3;4;5};0))
Bir önceki örnekte olduğu gibi dizi yapısını kullandık. Ancak Düşeyara fonksiyonunu DEVRİK_DÖNÜŞÜM(TRANSPOSE) fonksiyonu içine aldık. Bu fonksiyon, birden fazla sonucun döndüğü dizileri tersine çevirir.