Böyle bir fonksiyonmu vardı yada sakın o düşeyara olmasın demeyin. Bu fonksiyonu makro ile oluşturacağız. Özellikle düşeyara fonksiyonunun metin alanlarda ki sıkıntılı tavrı ve arama ile değer dizilerinin bir tabloda olması, tablonun ilk sütunun arama sütunu olması filan oldukça sıkıntıya sokabilir sizi.
Bu yazımda geliştireceğimiz bu formül ile oldukça basit bir şekilde bir aralıkta aranan değerin karşılığı olarak ikinci bir aralıktan değer alan nadide güzel bir formül olacaktır.
İlk olarak Visual Basic düzenleyicisine gidelim. Eğer şeridinizde geliştirici seçeneği yok ise Office 2007 de ofis tuşu altında bulunan seçeneklerden gelen ekranda ki Geliştirici sekmesi görünsün işaretini, daha üst versiyonlarda ise dosya sekmesinden yardım altında seçeneklere girerek şeridi özelleştir ekranına ulaşıp geliştirici seçeneğinin yanındaki kutucuğu işaretleyerek tamamlayabiliyoruz. Farklı sürüm ve durumlarda google üzerinden "Excelde şerit sekmelerini özelleştirme" hakkında destek alabilirsiniz.
Geliştirici sekmemize geçip Visual Basic tuşuna tıklıyoruz. Karşımıza bir editor geliyor. Burada sol tarafta bulunan çalışma kitabımızla aynı isme sahip klasöre sağ tıklayarak bir modül ekliyoruz.
Eklediğimiz modülün adı çok önemli değil. Gelen ekranda aşağıda ki kodları yazmamız gerek.
Public Function DIKEYBUL(AramaListe As Range, SonuclarListe As Range, Aranan As String) As String
For i = 1 To AramaListe.Rows.Count
If AramaListe.Cells(i, 1) = Aranan Then
DIKEYBUL = SonuclarListe.Cells(i, 1)
Exit Function
End If
Next i
DIKEYBUL = "Bulamadım"
End Function
Yukarıda ki fonksiyon iki range değeri ve bir string değeri alıyor. Döngü içerisinde ilk range de eşleştirme methoduyla aranan değeri bulmaya çalışıyor. Bulduğunda geri dönecek değeri sonuc range de ki aynı sırada ki satırdan okuyor ve fonksiyondan çıkıyor. Eğer fonksiyon birşey bulamazsa en son satırda bulunan geri döndürme çağrısı (fonksiyonun adı aynı zamanda geri döndürme çağrısıdır VBA da) üzerinden ne döneceğini gösteriyor. Burada ki Cells değerinde bulunan ilk parametre satır numarası (1 den başlar 0 değil) ikinci parametre ise sütun numarasını belirtir. Tek sütunlu aralıklarda çalışacağımız için 1 olarak belirledik. Hemen bir örnek uygulayalım.
A1 sütununda D1 değerini arayıp B1 sütununda ki aralıktan değerini döndürmesini isteyeceğiz. Yani Veli değerine karşılık 13 gelmesi gerek.
Evet artık string alanlar üzerinde gönül rahatlığıyla istediğimiz aralığı sorgulayıp istediğimiz aralıkta bulma işlemi de yapabiliriz.
Bir sonraki yazımda buluşmak dileğiyle esenlikle kalın...
0 yorum:
Yorum Gönder