excelde kendi eklenti ve fonksiyonlarınızı oluşturun
ID :
850
ISLEM :
excelde kendi eklenti ve fonksiyonlarınızı oluşturun
MAKRO KODU :
Bir Excel dosyasını açtığınızda şöyle bir formül kullandıysanız bilirsiniz; dec2hex, hex2dec, dec2bin, bin2dec vs., bu formülleri kullanabilmek için Araçlar – Eklentiler içinden Toolpak Çözümleyicilerin seçilmiş olması gerekir. Toolpak eklentisi Program Files\Microsoft Office\Office10\Library\Analysis\ATPVBAEN.XLA dosyasıdır. Eğer daha önce verilen bu tip formülleri kullanmak isterseniz bu dosyanın Eklentiler içinde seçilmiş olması gerekir. Bu dosya ne işe yarar derseniz, mühendislik kategorisinde formülleri içeren makroların yazıldığı bir dosyadır. Dec2Hex formülü; desimal olarak verilen değer yada hücrenin hexadesimal olarak değerini aktif hücreye yazdığı bir formüldür. Excel’in kendisine ait diğer eklentileri ise; Arama sihirbazı, Çözücü eklentisi, İnternet yardımcısı VBA, Koşullu toplam sihirbazıdır. Eğer hex, dec, oct, bin sayı çevrimlerini kullandıysanız XOR da kullanmak istemişsinizdir fakat XOR olarak Excel ‘in bir formülü yoktur. Bu durumda siz kendiniz bu formülü yazabilir ve sayfa içerisinden rahatlıkla kullanabilirsiniz…
BİR FORMÜL NASIL OLUŞTURULUR;
Eğer Excel in formüllerini incelemişseniz şuna benzer şekilde olduklarını görürsünüz;
=HEX2DEC(A1) ‘Yani A1 hücresinin içinde hex sayı var onu decimale çevir demek…
=HEX2DEC(“ff”) ‘Üsteki formülle aynı fakat hücre erimi değil direkt olarak hex biçimli veri girilmiş…
=TOPLA(A1:A10) ‘A1den A10 a kadar tüm hücrelerin içerisindeki verileri topla demek…
=TOPLA(A1;A5;A8;B13) ‘Üstteki formülle aynı fakat sadece A1 + A5 + A8 + B13 hücrelerini topla demek, erim olarak geniş karelik bir alan verilmemiş (“;” ve “:” ye dikkat!).
=TOPLA(A1;125) ‘Üstteki formülle yine aynı fakat sadece A1 hücresi ile 125 sayısını topla demek.
=DÜŞEYARA(A5;SHEET1!A1:C500;2;YANLIŞ) ‘Bu formülde ise aktif sayfanın A5 hücresine bak, sheet1 sayfasının A1:C500 eriminde A sütununda bunu ara; bulduğunda 2nci sütun (B sütununu)daki değeri yaz; eğer A5 ile bulduğun tamamıyla aynı ise demek….
Yukarıdaki formüllerde de görüleceği üzere;
1. Formül = ile başlar
2. Formülün kod kelimesi verilir
3. Formülde verilecek değerler parantez içinde girilir
4. Verilecek değer birden fazla ise aralarında noktalı virgül kullanılır
5. Değerler girilecek formülün ihtiyacına göre değişebilir (sayı olabilir, string olabilir, erim yada tek hücre olabilir vs.)
Şimdi bu bilgilerin ışığında kendi formülümüzü oluşturalım…
XOR fonksiyonunu yapan bir formül oluşturacağız. Verilen iki hücre yada erim içerisindeki verileri long olarak okuyacak ve birbirleriyle XORlayıp sonucu formül yazılan hücrede gösterecek.
1. Önce formülümüze bir isim verelim: XorDec (long tipindeki sayıların XOR u için kullanılacağından her zaman akılda kalması için anlamlı olmasına dikkat edilmeli ve kullanılamayacak isimlere dikkat!).
2. Girilecek (istenen) veriler ne olacak (önce tek hücreli sonra geniş erim olsun; A1 ile A2:A5 gibi)
3. Formül sonucu nasıl gösterilecek (formül girilen hücreye long tipinde sayı)
FONKSİYON OLUŞTURMAK;
Buraya kadar tamam, peki Formül nasıl yazılacak? Fark etmiş olacağınız üzere bu Basic’de de yazılan fonksiyonlara benzer. Giriş değerlerini alacak, üstünde işlem yapacak ve sonucunda bir değer döndürecek… Excel Visual Basic Düzenleyicisini (Araçlar – Makro altında yada Alt+F11 kısayol) açalım. Insert menüsünden bir Module ekleyelim, bu projemize yeni bir modül ekler.
Public Function xORdec(OneCell As Range, Optional MultipCells As Range) As Long
Satırını yazalım. Bu Public olarak fonksiyonumuzu tanımlayacak, her taraftan kullanabileceğiz. OneCell isimli değişken bir erim, tercihsel olarak MultipCells olarak diğer erim fonksiyonla birlikte girecek ve fonksiyondan Long tipinde değer dönecek.
‘kullanacağımız değer tiplerini tanımlayalım
Dim tmpH As Long ‘long tipinde tmpH değeri tüm XOR değerler için kullanılacak
‘hata tuzaklaması, eğer hata kontrolü yapılmazsa sonsuz döngü ve istenmeyen sonuçlar doğurabilir fonksiyonumuz
‘Local olarak tanımlanmasının nedeni function yada sublarda hata olursa buraya gelmemesi için
On Local Error GoTo errTekHücre
‘Eğer hücre doluysa bunu geçici bir değere ata
If OneCell Then tmpH = Val(OneCell)
‘geniş erim olarak tanımlanan çoklu hücrelerin değerini
For Each Cell In MultipCells
‘xor la
tmpH = tmpH Xor Val(Cell)
Next
‘sonucu fonksiyona ata
xORdec = tmpH
Exit Function
errTekHücre:
‘hatayı temizle
Err.Clear
‘gösterilecek sonuca ne yazılacak, hata nasıl gösterilecek; hata mesajı olarak biz burada 0 sonucunu döndürdük…
xORdec = 0
‘hata artık olduğu yerde kalsın
On Local Error GoTo 0
Exit Function
End Function
Basitçe yazacağımız kodlar şimdilik bu kadar. Şimdi bunu kaydedelim. Bu açık Excel dosyasının içinde yer alacak. Bu dosyanın herhangi bir yerine şimdi formülümüzü yazalım
=xordec(A3;A4:A10) ‘anlamı A3’den A10’a kadar hücrelerin içindekileri XORla demek eğer içinde hata oluşursa sonucunda 0 yazacak…
EKLENTİ OLUŞTURMAK;
Peki bu Excel dosyasını kaydedip, kapatıp başka bir Excel dosyası açarsak bu formülü kullanabilir miyiz? Bu formülü yazdığımız hücrede #AD? hata mesajı görünür. Bu formülün tanımlanamadığını gösterir. Bu sorun ise eklentilerle aşılır. Yani Excel her açıldığında belirlenen her eklenti Excel ile birlikte yüklenir.
Boş bir Excel dosyası açalım, Visual Basic Düzenleyicisini (Araçlar – Makro altında yada Alt+F11 kısayol) nden, Insert menüsünden bir Module ekleyelim. Yukarıda verilen kodları aynı şekilde yazalım.
Açmış olduğumuz çalışma kitabını farklı kaydet menüsü ile Microsoft Excel Eklentisi (*.xla) kayıt türünde, örneğin BenimMakrolarım adıyla kaydedelim. Bu çalışma kitabı sürücü:\Documents and Settings\Kullanıcı Adı\Application Data\Microsoft\AddIns\ dizininde kaydedilecektir.
Şimdi de Araçlar-Eklentiler menüsü açalım. Gözat butonuna basarak, yeni kaydetmiş olduğumuz eklentiyi işaretleyerek Tamam butonuna basalım. Kullanılabilir eklentiler: penceresinde bizim yazdığımız eklenti de görülecektir. Bunu işaretlediğimizde, her zaman Excel açılırken bizim eklentimizi de yükleyecektir.
Artık yazdığımız fonksiyonu herhangi bir Excel çalışma sayfası içerisinden formül yazarmış gibi girerek kullanabiliriz…
Şuna benzer bir fonksiyonu eklentinize eklerseniz,
Public Function aX() As String
aX = "Adınız Soyadınız"
End Function
Çalışma sayfanızda =aX() yazdığınızda, adınız soyadınız hemen görünecektir…
Görüleceği üzere, Excel in kolaylıklarını (özelliklerini) daha verimli kullanırsanız, Excel de sizi hamallıktan (rutin işlerden) kurtaracaktır