Excel gündelik problemlerinizde en çok kullandığınız çözüm ortağınız ise benim gibi bazı durumlarda Microsoft tarafından yazılmış standart fonksiyonlarının yetmediği keşke şu işi şöyle yapan bir fonksiyon olsaydı diyor musun? İşte bir Excel kitabında kendine ait bir fonksiyonu nasıl yazabilirsin anlatmaya çalışacağım.
Benim örneğimde elimdeki iki farklı kitapta yer alan liste elemanlarını her birini diğer listede var olup olmadığını belirlemek amacıyla düşeyara() fonksiyonunun yetmediği bir durumla karşılaştım.
Veri güvenliği nedeniyle listedeki örnek isimleri değiştirdim elbet. Burada düşeyara() fonksiyonunun yetmediği nokta arama yatığım listede aradığım isimler tam olarak yazılmadığı için düşeyara() fonksiyonunun son parametresine “doğru” değer verdiğinizde tabi olarak tam eşleşme bulamıyor. Parametreyi “yanlış” değer vererek arama yapılınca ise doğru sonuç döndüremiyor ne yazık ki. Böyle durumlarda hep Ctrl+F ile ulaştığım Ara işlevinin yaptığı gibi bulan bir fonksiyona ihtiyacım oluyor.
Bu problemde fonksiyonumu kendim yazdım.
Fonksiyonu yazmak için ister Ctrl+F11 tuşuyla isterseniz Excel şeridinde “Geliştirici” sekmesini görünür yaparak bu sekme içindeki Visual Basic düğmesiyle ulaşabilirsiniz.
Açılan ekran Excel için Visual Basic diliyle yerleşik işlevlerini de kullanarak bu işlevlerin dışında kalan her türlü ihtiyacınızı kod yazarak Excel’e yaptırabileceğiniz bir alan. Oyun bile yapanı görmüştüm!! Neyse bu ekranı kullanabilmek için bazı temel programlama bilgisine ihtiyacımız olacak. Örneğin değişken nedir gibi, bunların bilindiğini varsayarak devam ediyorum.
Bu ekranda sol tarafta gördüğümüz bölüm açık olan Excel kitaplarını ve bu kitap içerisindeki sayfaları “SheetX” biçiminde gösterir. Burada bulunan sayfalara ya da “ThisWorkbook” yazan nesneye çift tıklayarak sadece bir sayfaya ya da tüm kitapta gerçekleşen eylemler için kodlar yazabiliriz. Ancak bir fonksiyon oluşturmak istiyoruz. Bunun için editörün menüsünde yer alan “Insert” düğmesine basarak alt menüden “Add Module” e tıklamalıyız. Bu düğme ortadaki gri alanda fonksiyonumuzu oluşturacak kodları yazabileceğimiz bir metin editörü oluşturarak, sağdaki Project penceresine de bir “Module1” isminde nesne ekleyecektir.
Editöre ekleyeceğimiz kodlar Excel’de kullanılabilmesi için bir yordam (procedure) olmalıdır yani alt program. Bu yüzden editöre Excel’de işlev olarak kullanabilmek için bir fonksiyon eklemeliyiz. Insert menü tuşuna tıklayarak Add Procedure düğmesiyle bir pencereye ulaşıyoruz. Bu pencerede oluşturacağımız fonksiyona bir isim ve özelliklerini ayarlayacağız. İsim verirken boşluk bırakmadan ve Türkçe karakterler kullanmadan isimlendirmeliyiz. (örneğin EnKüçükDeğeriBul() yerine EnKucukDegeriBul() gibi…) Verdiğimiz ismi doğrudan Excel hücresinde fonksiyonu yazarken kullanacağız. İsmi belirledikten sonra fonksiyonun Excel den çağrılabilmesi için Public özelliğini işaretlemeliyiz, tabi Function tipini de işaretlemeyi unutmadan.
OK düğmesine basıp kod yazmaya geçebiliriz artık. Kodu yazarken test esnasında kodun çalışmasının yolunda olduğunu görebilmek için kullanmak zorunda kaldığım satırları açıklama satırı halinde tutuyorum kodun içerisinde.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Public Function AraliktaVarMi(ByVal findWhat As Range, ByVal findWhere As Range) As Boolean Dim c As Range Dim foundFirstAddress As String foundFirstAddress = "" 'MsgBox foundFirstAddress 'MsgBox findWhat.Text 'MsgBox findWhere.Address Set c = findWhere.Find(findWhat.Text, LookIn:=xlValues) 'Debug.Print c.Address If Not c Is Nothing Then foundFirstAddress = c.Address AraliktaVarMi = True Else AraliktaVarMi = False End If 'MsgBox foundFirstAddress End Function |
Elbette kendi yazdığınız kod doğrudan çalışmayabilir. Test edip düzenledikten sonra artık Excel içinde kullanıma hazır olunca fonksiyonu aynı kitap içinde tabi ki kullanabiliriz. Hücre düzenleme modundayken “=” ile başlayarak oluşturduğumuz fonksiyonunun ilk harflerini yazdığımızda Excel’in tamamlamaya çalıştığı listede yazdığımız fonksiyonu görebiliriz.
Yazdığımız fonksiyon işlevini yerine getiriyor ve her satırdaki aradığı hücre değeri için bulmaya çalıştığı aralıkta karşılaşırsa “Doğru”, bulamaz ise “Yanlış” sonucunu döndürüyor. Listeyi daha güzel okunaklı yapmak için işlev yazdığımız B sütunundaki sonuçlara göre “Koşullu biçimlendirme” yaparak bulunan listede olan değerlerin renklendirilmesini sağlayabiliriz.
Koşullu biçimlendirmeyi yapabilmek için aradığımız değer aralığı olan A2 ile A34 aralığını seçip, “Giriş” sekmesinde “Stiller” bölümündeki “Koşullu Biçimlendirme” düğmesine tıklayın. Açılan pencerede “Yeni Kural Ekle”, ardından da “Biçimlendirilecek hücreleri belirlemek için formül kullan” seçeneğine tıklayınca hemen altında açılan “Bu formül doğru olduğunda değerleri biçimlendir” başlıklı kutuya aşağıdaki formülü yazıyoruz:
1 |
=B2=Doğru |
Ardından pencerenin sağ alt köşesindeki “Biçimlendir” düğmesine tıklayarak listede bulunan hücrelerin nasıl görünmesini arzuluyorsak biçimlendirmesini yapıyoruz. Yazdığımız kod işlevin döndürdüğü sonuca göre hücreyi biçimlendirecek böylece hangi değerin listede bulunduğunu daha kolay ayırt edebileceğiz.
Bahsini ettiğimiz işlemlerin uygulanmış olduğu dosyanın bağlantısını burada bulabilirsiniz.
[:]
0 Yorum