Office Programı Kullanıcılarının Uğrak Yeri

Öncelikle “ne işe yarar?” sorusu ile başlayalım. Aşağıdaki örnek incelendiğinde kullanım amacı daha iyi anlaşılacaktır ama yine de kısaca yaptığı işi anlatacak olursak, elimizde var olan bir değeri, başka bir tabloda bulup, karşısındaki bir bilgiyi getirmek için kullanılır. Aşağıdaki örnekte, Fatura’ya eklenmiş olan ürün kodları, Ürünler tablosunda aranarak, karşısındaki ürün adı ve fiyat bilgileri getirilecektir.

Düşeyara (Vlookup) fonksiyonu, Excel’in en çok kullanılan fonksiyonlarından birisidir. Bu fonksiyonu daha önce kullandıysanız, ilk adımlardaki basit uygulamayı atlayabilirsiniz. Yazının alt başlıklarında, Düzeyara (Vlookup) fonksiyonunu kullanırken dikkat edilmesi gereken hususlara ve farklı kullanım şekillerini bulabilirsiniz.

En Basit Kullanım Şekliyle Düşeyara (Vlookup)

Aşağıdaki resimlerde göründüğü gibi, Fatura Bilgileri ve Ürünler sayfalarını içeren bir Excel dosyamız olsun.

1 2

Fatura Bilgileri sayfasında, satılan ürünlerin kodları yazılarak bir fatura oluşturulmuştur. Burada yapmak istediğimiz, faturadaki ürün kodlarını, “Ürün Tablosu”nda aratarak, karşısındaki Ürün Adı ve Satış Fiyatını faturaya eklemektir. İlk ürün kodu olan KZ001 için Ürün Adını alalım:

1- Fatura Bilgileri sayfasında, KZ001 ürününün Ürün Adını görmek istediğimiz B3 hücresini seçiyoruz.

2- Arama ve Başvuru (Lookup & References) kategorisinden Düşeyara (Vloookup) fonksiyonunu seçiyoruz.

3

3- Düşeyara (Vlookup) fonksiyon penceresi karşımıza gelmiştir.

4

4- Aranan_değer (Lookup_value): Fatura Bilgilerinde KZ001 ürününün yazılmış olduğu hücre, bu örnekte A3,

Tablo_dizisi (Table_array): KZ001 ürününü arayacağımız tablo, bu örnekte ÜRÜNLER!A1:D15,

Sütun_indis_sayısı (Col_index_num): Ürünler tablosundan almak istediğimiz Ürün Adı bilgisinin bulunduğu sütun sırası, bu örnekte 2,

Aralık_bak (Range_lookup): Ürünler tablonuz Ürün Koduna göre sıralı değilse 0 ya da YANLIŞ (False) yazınız. Nedenini yazının devamında bulabilirsiniz.

5

5- Tamam düğmesine tıkladığınızda, Excel “Kazak” olarak ilk ürün ismini getirecektir.

6

Ürünün satış fiyatını almak istediğimizde, formülde tek değişmesi gereken Sütun_indis_sayısı (Col_index_num) alanına yazıla değerdir. Ürünler tablosuna tekrar dikkat edecek olursak, ilk işlemde Ürün Adını getiriyorduk ve Ürünler tablosunda 2. sırada yer alıyordu. Ürünün Satış Fiyatı ise Ürünler tablosunda 3. sırada yer alıyor. Bu nedenle Sütun_indis_sayısı (Col_index_num), Satış Fiyatını getirirken 3 olmalıdır.

Özet olarak aşağıdaki şekillerde açıklamaya çalışacak olursak,

7

Fatura Bilgileri sayfasında yer alan KZ001 ürün kodunu, Ürünler sayfasındaki tabloda ara, bulduğunda 2. sütunda yer alan Ürün Adını getir.

Düşeyara (Vlookup) Kullanırken Dikkat Edilmesi Gereken Hususlar

Düşeyara (Vlookup) fonksiyonu, seçilen tablonun sadece ilk sütununda arama yapar. Yukarıdaki örnekte, aradığımız Ürün Kodu, seçtiğimiz Ürünler Tablosunda ilk sütunda olmalıdır. Ürünler tablosunda Ürün Kodu ve Ürün Adı sütunlarının yerlerini değiştirirsek fonksiyon doğru sonuç vermeyecek ya da #YOK (#N/A) hatası verecektir.

Yazdığımız formülü diğer ürün isimlerini bulmak için kopyaladığımızda, bazı ürünler için #YOK (#N/A) hatası verecektir. Bunun sebebi, fonksiyonun Tablo_dizisi (Table_array) bölümünde seçilen Ürünler tablosunun, klavyeden F4 tuşuna basılarak sabitlenmemesidir. $ işaretleri kullanılarak Ürünler tablosu mutlak referans haline getirilmeli ya da Tablo özelliğinin kazandırılarak formülde Tablo adının kullanılması hatayı önleyecektir.

Sütun_indis_sayısı (Col_index_num), dönecek değerin seçilen tabloda kaçıncı sütunda olduğunu belirtir. Aşağıdaki şekilde yer alan tablodan Ürün Kodunu aratarak Ürün Adını almak istediğimizi varsayalım. Ürün Adı C sütununda yani sayfanın 3. sütununda yer almaktadır. Bu değer Düşeyara (Vlookup) fonksiyonu için önemli değildir. Fonksiyon için önemli olan, tablo Ürün Adı alanının tablo içerisindeki sırasıdır. Yani Sütun_indis_sayısı (Col_index_num) için kullanılması gereken değer 2’dir.

11

Aralık_bak (Range_lookup) 0 ya da 1 Yazmam Neyi Değiştirir?

Bu özellik, aradığımız değeri bulamadığında fonksiyonun ne yapacağına karar vermek amacıyla kullanılır.  0 yazdığımızda, aradığımız değeri bulamazsa #YOK (#N/A) hatası verecektir. 1 yazdığımızda ya da boş bıraktığımızda, aradığımız değeri bulamazsa, en yakın bir önceki değeri alacaktır. Bunu logaritma örneği ile açıklayacak olursak, aşağıdaki şekilde 10 tabanında logaritma 1..10 arası sayıların karşılığı gösterilmektedir.

8

4,7 rakamını Düşeyara (Vlookup) fonksiyonu ile A1:B10 aralığındaki tabloda aradığımızda, 4,7 sayısına en yakın bir üst değer olan 4 rakamının karşısındaki değer sonuç olarak dönmektedir.

Burada, tablonun A sütununa göre sıralanmış olduğuna dikkat ediniz. Peki neden? Tabloyu ilk sütuna göre sıralamam gerekli mi? Eğer Aralık_bak (Range_lookup) alanına 1 yazmışsak ya da boş bırakmışsak EVET, gerekli! Bu alana 1 yazdığımızda ya da boş bıraktığımızda, Excel formülün işleyişinde bir değişiklik yapar ve yarıya bölme metodu ile sonuca ulaşmaya çalışır. Bir örnek ile inceleyelim. Aşağıdaki şekilde B2 hücresinde yazılı olan “G” harfini arıyoruz. Düşeyara (Vlookup) fonksiyonun C2 hücresinde bize bulduğu değer ise “E” harfidir. Aradığımız “G” harfi A6 hücresinde olmasına rağmen Excel yanlış sonuç getiriyor.

9

Yukarıdaki şekilde fonksiyonun Aralık_bak (Range_lookup) alanına 1 yazıldığı görünmektedir. Excel bu durumda fonksiyonu şu şekilde çalıştıracaktır:

1. Adım: Tablonun tam ortasındaki değere git: B

2. Adım: Aradığım G harfi alfabetik olarak B’den sonra geldiği için, B’nin üst kısmında kalan değerleri atla, alt kısımda kalanların tam ortasındaki değere git: F

3. Adım: Aradığım G harfi alfabetik olarak F’den sonra geldiği için, Bve F’nin arasında kalan değerleri atla, F’nin alt kısımda kalanların tam ortasındaki değere git: E

4. Adım: Başka veri kaldı mı?: Hayır, Geldiğim E değeri alfabetik olarak aradığım G harfinden önce mi? Evet, E değerini döndür.

Eğer bu örnekte A8 hücresinde E yerine H olsaydı sizce ne dönerdi? Cevabı aşağıdaki şekillerde göstermeye çalıştım.

10

1. Adım: Tablonun tam ortasındaki B’ye git.

2. Adım: B’den sonra kalanların tam ortasındaki F’ye git.

3. Adım: F’den sonra kalan tek değeri yani H’yi kontrol et.

Buraya kadar üstteki örnek ile aynı işlemleri uyguluyor. Fakat son gelinen değerler, üstteki örnekte E (G’den alfabetik olarak önce), bu örnekte ise H (G’den alfabetik olarak sonra) harfidir. Bu işlemde gelinen son değer olan H harfi, alfabetik olarak G’den sonra olduğu için, bir önceki en küçük değer yani F dönecektir.

Kullandığım Örnek Dosyası

http://1drv.ms/1wYHZEV

Comments on: "Basitten Karmaşığa Düşeyara (Vlookup) Fonksiyonu Kullanımı" (22)

  1. […] aratıp, karşısındaki başka bir değeri almak için kullanılır. Daha detaylı bilgiye Basitten Karmaşığa Düşeyara (Vlookup) Fonksiyonu Kullanımı başlıklı yazımdan […]

  2. tamer yiğit said:

    hocam merhaba ben Tamer yiğit
    Hocam ben excel de bir personel bordro için bir çalışma yaptım.
    Çalışmamda 4 sayfadan oluşuyor
    1 personel kartları MYSQL den veri çeken sayfa
    2 datalar mysqlden gelen bilgileri eşleştiriyor
    3 liste mysqlden gelen eşleşmiş bilgileri derliyor
    4 toplu yazım burada sorunum var
    sorun liste sayfamda bilgiler alt alta geliyor.
    toplu yazımda ben bunu yan yana gelmesini istiyorum.
    ama bazı kişiler günde 5 sefer girdi çıktı yapıyor bazıları günde 1 sefer
    günde 1 sefer yapanlarda sorun yok fazlası oldugunda düşey ara ile başım belada
    düşeyara satırın ilkini okuyor oysa ben 2.- 3 -4-5- giriş cıkışlarıda ekranda istiyorum ne yapabilirim.

    şimdiden eşekkur ederim

    • Tamer Bey merhaba,
      Aşağıdaki linkte bir örnek dosya var. Liste parantezi ile özel formül çözümü de var ama karmaşıklığı en aza indirmek için benim önerim ayrı bir sütuna sıra numarası eklemek. Formül çözümünde vlookup fonksiyonu var, fakat üst satırdaki başlıkları sizin eklemeniz ve iferror ile kontrol eklemeniz gerekir. Bir de hücre sabitlemeleri işi iyice karıştırır.
      Bence optimum çözüm sıra no ekledikten sonra Pivot Table ile raporu oluşturmak.
      Ekteki dosyayı bir inceleyin, kafanızda soru işaretleri olursa tekrar haberlerşelim.
      Örnek Dosya: http://1drv.ms/1CO9Mc8
      iyi çalışmalar, Özcan Elmalı

  3. hamdi bolgı said:

    hocam iyi günler
    ben hamdi bolgı
    fatura yazmak için düşey arayı kullandım fakat aynı sayfaya 30 gün bi şablon oluşturdum. diyelim ilk üç gün sıkıntı yok ama dördüncü gün bi ürünün fiyatı değişince önceki üç günün fiyat değikliğinden etlienmesini nasıl önlerim.
    saygılar iyi çalışmalar

    • hamdi bolgı said:

      önceki üç günün fiyat değikliğinden etlienmesini nasıl önlerim. fiyat değişikliğinden etkilenmemesi olacaktı

      • Hamdi Bey merhaba,
        Fiyat değişikliğini kaynak tabloda yeni kayıt eklemeden yapıyorsanız, tüm bağlı formüller etkilenir. Fiyatın değiştiği tarih ile birlikte yeni kayıt olarak eklerseniz ve düşeyara da beraber kullanırsanız diğer 3 gün etkilenmeyecektir.

  4. kaan akman said:

    Merhaba Kolay Gelsin Benim Sorunum Şu Ben Aynı Değerlerin olduğu Tabloları Karşılaştırmak İçin Kullanabilirmiyim Bu Formülü ? İstediğim Örneğin bir sayfamda 120 Fatura var, Diğer Sayfamda da Aynıları Var Bu ikisinin Fatura No. , Tarih , ve Matrahlarını Karşılaştırmak İstiyorum Bana Doğruysa doğru veya Yanlış Değer Olarak Verirmi Şimdiden Çok Teşekkür Ederim.

  5. merhaba,

    tam eşleştirme yapmadan düşeyara fonksiyonu nasıl çalışır bilen varmı acaba

    örnek

    aranan değer; bmw
    tablo dizini; bmw otomobil

    bmw kelimesini bmw otomobil içinde aratmak istiyorum.

    yardımlarınız için şimdiden teşkkükler

    • Sadettin Bey merhaba,
      Cevap biraz geç oldu kusura bakmayın. Aranan kelimenin başına sonuna “*” eklerseniz problem çözülecektir.
      Örneğin;
      =VLOOKUP(A2;Sheet3!$A$1:$B$3;2;0)
      yerine;
      =VLOOKUP(“*”&A2&”*”;Sheet3!$A$1:$B$3;2;0) yazdığınızda, içinde aradığınız kelime geçen ilk hücreyi bulacaktır.
      =VLOOKUP(A2&”*”;Sheet3!$A$1:$B$3;2;0) aradığınız kelime ile başlayanı,
      =VLOOKUP(A2&”*”;Sheet3!$A$1:$B$3;2;0) ise aradığınız kelime ile biteni getirecektir.

  6. Mustafa EĞİLMEZ said:

    merhaba özcan bey

    1 nolu çalışma kitabında 3 ayrı sütunda veriler ve karşılığında sayılar bulunmakta.

    A1:A100 Veri B1:B100 Değer
    C1:C100 Veri D1:D100 Değer
    E1:E100 Veri F1:F100 Değer

    2 nolu çalışma kitabında ;

    A4
    C8
    C67
    D76

    verilerini yazdığımda karşılığında 1 nolu çalışma kitabından değerlerini getirmelerini istiyorum. Ancak hücreye yazacağım veri random olacak. A – C – E sutunlarından hangisinden yazdıgımın bir önemli olmaması gerekiyor.

    Bunu DÜŞEYARA formulunu kullanarak nasıl yapabilirim.

    Şimdiden Teşekkürler.

    • Mustafa Bey merhaba,
      DÜŞEYARA fonksiyonunu EĞERHATA fonksiyonu ile kullanarak çözüme ulaşabilirsiniz. =EĞERHATA(DÜŞEYARA(A2;Sayfa1!$A$1:$B$100;2;0);”Veri Bulunamadı”) formülü, A1:A100 aralığında veriyi arayacak, bulursa değeri, bulamazsa Veri Bulunmadı ifadesini yazacaktır. Veri bulunamadı kısmı için EĞERHATA ve DÜŞÜYARA fonksiyonlarını tekrar ederek C ve E sütunlarında da ayrıca arama yaptırabilirsiniz.
      Formül aşağıdaki şekilde olacaktır:
      =EĞERHATA(DÜŞEYARA(A2;Sayfa1!$A$1:$B$100;2;0);EĞERHATA(DÜŞEYARA(A2;Sayfa1!$C$1:$D$100;2;0);EĞERHATA(DÜŞEYARA(A2;Sayfa1!$E$1:$F$100;2;0);”Veri Bulunamadı”)))
      http://1drv.ms/21mksba linkinden örnek dosyayı indirip inceleyebilirsiniz.

  7. süleyman akyürek said:

    özcan bey bir sorum olacak
    iki sutunlu bir listeden bir sorgulama yapmak istiyorum mesela A sutununda kodlar B sütünunda rakamlar mevcut listede var olup olmadığını sorgulayacağım, C1’e kod ve D1’e rakamı yazdığımda E1’e listede var ise vardır yok ise yoktur yazmasını istiyorum.
    A sutununda aynı kodlar ve değişik kodlar var. gelen verinin aynı koda ait olması gerekiyor yardımcı olursanız sevinirim şimdiden teşekkürler

    • Süleyman Bey merhaba,
      Sorunuzun bir çok farklı çözüm yöntemi var. 2 tanesini kısaca anlatmaya çalışayım:
      1. Yöntem: Yardımcı sütun ekleme, A sütununa KOD ve RAKAM sütunlarını birleştirerek alıp, aramayı bu sütunda yaparız.
      A sütunundaki formül =B2&C2 olur.
      B sütununda kodlar
      C sütununda rakamlar
      D2 ve E2 hücrelerinde aradığınız kod ve rakamın olduğunu düşünürsek, F2 hücresindeki formül: =DÜŞEYARA(A:A;D2&E2;1;0) olacaktır. Bulunamadığında hata kontrolünü de eklersek; =EĞERHATA(DÜŞEYARA(A:A;D2&E2;1;0);”Veri Bulunamadı”) şeklinde olacaktır.

      2. Yöntem: ELEMAN fonksiyonu ile liste formülü kullanmak, ELEMAN({1};A:A&B:B) fonksiyonu, kod ve rakamların bulunduğu A ve B sütunlarını birleştirerek size ilk elemanı gösterecektir.
      A sütununda Kodlar,
      B sütununda Rakamlar,
      C2 ve D2 hücrelerinde aradığınız kod ve rakamın olduğunu düşünürsek, E2 hücresindeki formül: =DÜŞEYARA(D2&E2;ELEMAN({1};A:A&B:B);1;0) olacaktır. Bulunamadığında hata kontrolünü de eklersek; =EĞERHATA(DÜŞEYARA(D2&E2;ELEMAN({1};A:A&B:B);1;0);”Veri Bulunamadı”) şeklinde olacaktır. Bu formülün liste formülü olarak kullanılması gerekir. Bu nedenle formülü yazdıktan sonra sadece Enter yerine Ctrl + Shift basılı iken Enter’a basmak gerekir.

      https://onedrive.live.com/redir?resid=49AE10480C7BF7C1!144333&authkey=!AGpzMZhukTCtmyQ&ithint=file%2cxlsx adresinden örnek dosyayı indirebilirsiniz.

  8. hüseyin said:

    linki yenileyebilirmisiniz rica etsem

  9. Özcan Bey merhaba,
    Teklif dosyamızda ürünlerin kodunu girerek karşısına ürün adı ve liste fiyatının gelmesini istiyoruz. Ben bunu aynı excel dosyası içerisinde farklı sayfar kullanarak =DÜSEYARA formülü ile yaptım ama çok yer kapladı yani her kaydettiğim teklif dosyasında ürün listeside var. Ben bunu farklı dosyalarda yapmaya çalıştım ama yapamadım.Dosyada A1 hücresine ürün kodunu yazdığımda B1 hücresine ürün adı C1 hücresine de ürünün fiyatının gelmesini istiyorum Tabi bu bilgileri alacağım excel dosyası kapalı degil açık olacak

    • Merhaba Oğuz Bey,
      Dosyanın açık olması şart değil. =DÜŞEYARA(A2;‘C:\Users\Genel\Desktop\[Data.xlsx]Sheet1’!$A$1:$B$10;2;0) formülünü örnek olarak alacak olursak, dosyanın bilgisayarınızdaki adresini doğru yazmanız yeterli.

      Kolay gelsin

      • Özcan bey cevabınız için teşekkür ederim. benim yazdığım formülde aşağıdaki gibi sizinki ile aynı galiba ama olmuyor.Veri aldığım dosya kapalı ise güncelleştir / güncelleştirme seçenekleri çıkıyor. ama veri çağırdığımda olmuyor. Mutlaka dosyanın açık olması gerikiyor.
        =EĞER(L16″”;EĞER(EHATALIYSA(DÜŞEYARA(L16;’C:\Documents and Settings\muhasebe\Desktop\Yeni Klasör\[Kitap1.xls]Sayfa1′!$A:$C;3;0))

      • Tekrar merhaba,
        ilk olarak formülünüzü daha kolay takip edilebilir hale getirmek için =EĞERHATA(DÜŞEYARA(A3;’C:\Users\Genel\Desktop\Guvenli\[kaynak.xlsx]Sayfa1′!$A:$B;2;0);””) haline getirmek faydalı olacaktır.
        Dış bağlantıların güncellenmesi ile ilgili olarak, Excel güvenlik nedeniyle dış dosyalara bağlantıları dosyanın açılışında devre dışı bırakır. Bu nedenle de açılışta size güncelleştirmek için sorar. “Güncelle” düğmesine tıklarsanız kaynak dosyanızı açmanıza gerek kalmaz.
        Ek olarak, açılışta güncellemeyi sormasını istemiyorsanız, Dosya –> Seçenekler –> Güven Merkezi –> Güven Merkezi Ayarları seçeneklerini seçip, açılan pencereden “Çalışma Kitabı Bağlantıları için güvenlik ayarları” seçeneklerinden “Tüm Çalışma Kitabı Bağlantılarını otomatik güncelleştirmeyi etkinleştir” seçeneğini işaretleyebilirsiniz. Fakat bu seçeneği işaretlemeniz güvenlik nedeniyle önerilmez. Dosyayı açarken “Güncelleştir” düğmesine tıklayın.

  10. Özcan Bey tekrar merhaba, yazdıklarınızın aynısını yaptım ama veriyi almıyor, tekrar eski haline getirdim ama dosya açık olmadan veriyi güncellemiyor. office 2003 kullanıyorum acaba versiyondan mı yapmıyor.

Yorum bırakın