Excel'de özel işlevler oluşturun

Uygulandığı Öğe
Microsoft 365 için Excel Mac'te Microsoft 365 için Excel Excel 2024 Mac için Excel 2024 Excel 2021 Mac için Excel 2021 Excel 2019 Excel 2016

Excel'de çok sayıda yerleşik çalışma sayfası işlevi bulunsa da, büyük olasılıkla gerçekleştirdiğiniz her hesaplama türü için bir işlevi yoktur. Excel tasarımcıları, her kullanıcının hesaplama gereksinimlerini tahmin edemezlerdi. Bunun yerine, Excel size bu makalede açıklanan özel işlevler oluşturma olanağı sağlar.

İpucu

Bu makaledeki bilgiler ileri düzey Excel kullanıcılarına yöneliktir. İşlevler hakkında daha fazla bilgi için lütfen Excel işlevleri (kategoriye göre) makalesine gidin.

Basit bir özel işlev oluşturma

Makrolar gibi özel işlevler Visual Basic for ApplicationsVisual Basic for Applications (VBA) programlama dilini kullanır. Makrolardan iki önemli açıdan farklıdırlar. İlk olarak, Altprosedürler yerine İşlev prosedürlerini kullanırlar. Yani, Sub deyimi yerine Function deyimiyle başlar ve End Sub yerine End Function ile biterler. İkincisi, harekete geçmek yerine hesaplamalar yaparlar. Aralıkları seçen ve biçimlendiren deyimler gibi belirli türdeki deyimler özel işlevlerin dışında tutulur. Bu makalede, özel işlevler oluşturmayı ve kullanmayı öğreneceksiniz. İşlevler ve makrolar oluşturmak için, Visual Basic Düzenleyicisi (VBE) ile çalışırsınız ve VBE, Excel'den ayrı olarak yeni bir pencerede açılır.

Şirketinizin, siparişin 100 birimden fazla olması koşuluyla bir ürünün satışında yüzde 10'luk bir miktar indirimi sunduğunu varsayalım. Aşağıdaki paragraflarda, bu indirimi hesaplamak için bir fonksiyon göstereceğiz.

Aşağıdaki örnekte her bir öğenin, miktarın, fiyatın, indirimin (varsa) ve sonuçta elde edilen genişletilmiş fiyatın listelendiği bir sipariş formu gösterilmektedir.

Özel işlevi olmayan örnek sipariş formu Bu çalışma kitabında özel bir İNDİRİM işlevi oluşturmak için şu adımları izleyin:

  1. Alt+F11 tuşlarına basarak Visual Basic Düzenleyicisi'ni açın (Mac'te FN+ALT+F11 tuşlarına basın) ve Modül Ekle'ye> tıklayın. Visual Basic Düzenleyicisi'nin sağ tarafında yeni bir modül penceresi görüntülenir.

  2. Aşağıdaki kodu kopyalayıp yeni modüle yapıştırın.

    Function DISCOUNT(quantity, price)
     If quantity >=100 Then
     DISCOUNT = quantity * price * 0.1
     Else
     DISCOUNT = 0
     End If
    
     DISCOUNT = Application.Round(Discount, 2)
    End Function
    
    

Not

Kodunuzu daha kolay okunur hale getirmek için, satırları girintilemek üzere Sekme tuşunu kullanabilirsiniz. Girinti yalnızca sizin yararınızadır ve isteğe bağlıdır, çünkü kod onunla veya kod olmadan çalışacaktır. Girintili bir satır yazdıktan sonra, Visual Basic Düzenleyicisi bir sonraki satırınızın da benzer girintili olacağını varsayar. Bir sekme karakteri dışarı (yani sola) gitmek için, Shift+Sekme tuşlarına basın.

Özel işlevleri kullanma

Artık yeni İNDİRİM işlevini kullanmaya hazırsınız. Visual Basic Düzenleyicisi'ni kapatın, G7 hücresini seçin ve şunu yazın:

=İNDIRIM(D7,E7)

Excel, 200 birim için yüzde 10 indirimi birim başına 47,50 TL olarak hesaplar ve 950,00 TL döndürür.

VBA kodunuzun ilk satırında, İşlev İNDİRİM(miktar, fiyat), İNDİRİM işlevinin miktar ve fiyat olmak üzere iki bağımsız değişken gerektirdiğini belirtmiştiniz. Bir çalışma sayfası hücresinde işlevi çağırdığınızda, bu iki bağımsız değişkeni de eklemeniz gerekir. =İNDİRİM(D7,E7) formülünde, miktar bağımsız değişkeni D7 ve fiyat bağımsız değişkeni de E7'dir. Artık aşağıda gösterilen sonuçları almak için İNDİRİM formülünü G8:G13'e kopyalayabilirsiniz.

Excel'in bu işlev yordamını nasıl yorumladığını ele alalım. Enter tuşuna bastığınızda, Excel geçerli çalışma kitabında İNDİRİM adını arar ve bunun VBA modülünde özel bir işlev olduğunu bulur. Parantez içine alınan miktar vefiyat bağımsız değişken adları, indirim hesaplamasının dayandığı değerler için yer tutuculardır.

Özel işleve sahip örnek sipariş formu Aşağıdaki kod bloğunda yer alan If deyimi, miktar bağımsız değişkenini inceler ve satılan öğe sayısının 100'e eşit veya daha büyük olup olmadığını belirler:


If quantity >= 100 Then
 DISCOUNT = quantity * price * 0.1
Else
 DISCOUNT = 0
End If

Satılan öğe sayısı 100'e eşit veya daha büyükse, VBA miktar değerini fiyat değeriyle çarpıp sonucu 0,1 ile çarpan aşağıdaki deyimi yürütür:

Discount = quantity * price * 0.1

Sonuç, İndirim değişkeni olarak depolanır. Bir değişkende değer depolayan VBA deyiminin atama deyimi olarak adlandırılmasının nedeni, eşittir işaretinin sağ tarafındaki ifadeyi değerlendirmesini ve sonucu sol taraftaki değişken adına atamasıdır. İndirim değişkeni işlev yordamıyla aynı ada sahip olduğundan, değişkende depolanan değer İNDİRİM işlevini çağıran çalışma sayfası formülüne döndürülür.

Miktar 100'den küçükse, VBA aşağıdaki deyimi yürütür:

Discount = 0

Son olarak, aşağıdaki deyim İndirim değişkenine atanan değeri iki ondalık konuma yuvarlar:

Discount = Application.Round(Discount, 2)

VBA'da YUVARLA işlevi yoktur, ancak Excel'de vardır. Dolayısıyla, bu deyimde YUVARLA kullanmak için, VBA'ya Application nesnesinde (Excel) Round yöntemini (işlev) aramasını söylersiniz. Bunu, Yuvarlak sözcüğünün önüne Uygulama sözcüğünü ekleyerek yaparsınız. VBA modülünden bir Excel işlevine erişmeniz gerektiğinde, her zaman bu söz dizimini kullanın.

Özel işlev kurallarını anlama

Özel işlevler Function deyimiyle başlamalı ve End Function deyimiyle bitmelidir. İşlev adına ek olarak, İşlev deyimi genellikle bir veya birden çok bağımsız değişken belirtir. Bununla birlikte, bağımsız değişkenleri olmayan bir işlev oluşturabilirsiniz. Excel'de bağımsız değişken kullanmayan birkaç yerleşik işlev (S_SAYI_ÜRET ve ŞİMDİ gibi) vardır.

İşlev deyiminden sonra, işlev yordamı, işleve geçirilen bağımsız değişkenleri kullanarak kararlar alan ve hesaplamalar gerçekleştiren bir veya daha fazla VBA deyimi içerir. Son olarak, işlev yordamının bir yerinde, işlevle aynı ada sahip bir değişkene değer atayan bir deyim eklemelisiniz. Bu değer, işlevi çağıran formüle döndürülür.

Özel işlevlerde VBA anahtar sözcüklerini kullanma

Özel işlevlerde kullanabileceğiniz VBA anahtar sözcüklerinin sayısı, makrolarda kullanabileceğinizin sayısından azdır. Özel işlevlerin, çalışma sayfasındaki bir formüle veya başka bir VBA makrosunda ya da işlevinde kullanılan bir ifadeye değer döndürmek dışında bir şey yapmasına izin verilmez. Örneğin, özel işlevler pencereleri yeniden boyutlandıramaz, hücredeki bir formülü düzenleyemez veya hücredeki metnin yazı tipi, renk ya da desen seçeneklerini değiştiremez. Bir işlev yordamına bu tür bir "eylem" kodu eklerseniz, işlev #VALUE! hatası döndürür.

Bir işlev yordamının (hesaplamalar yapmak dışında) yapabileceği tek eylem bir iletişim kutusu görüntülemektir. İşlevi yürüten kullanıcıdan girdi almanın bir yolu olarak özel bir işlevde bir InputBox deyimi kullanabilirsiniz. Kullanıcıya bilgi aktarma aracı olarak bir MsgBox deyimi kullanabilirsiniz. Özel iletişim kutuları veya kullanıcı formları da kullanabilirsiniz, ancak bunlar bu girişin kapsamı dışında kalan bir konudur.

Makroları ve özel işlevleri belgeleme

Basit makroların ve özel işlevlerin bile okunması zor olabilir. Açıklama biçiminde açıklayıcı bir metin yazarak bunların anlaşılmasını kolaylaştırabilirsiniz. Açıklamaları, açıklayıcı metnin önüne kesme işareti koyarak eklersiniz. Örneğin, aşağıdaki örnekte İNDİRİM işlevi açıklamalarla birlikte gösterilir. Bunun gibi açıklamalar eklemek, sizin veya başkalarının zaman geçtikçe VBA kodunuzu korumanızı kolaylaştırır. Gelecekte kodda değişiklik yapmanız gerekirse, başlangıçta ne yaptığınızı anlamanız daha kolay olacaktır.

Açıklamalar içeren bir VBA işlevi örneği Kesme işareti, Excel'e aynı satırın sağındaki her şeyi yoksaymasını söyler, böylece kendi başına satırlarda veya VBA kodu içeren satırların sağ tarafında açıklamalar oluşturabilirsiniz. Görece uzun bir kod bloğuna genel amacını açıklayan bir açıklamayla başlayabilir ve ardından tek tek ifadeleri belgelemek için satır içi açıklamaları kullanabilirsiniz.

Makrolarınızı ve özel işlevlerinizi belgelemenin bir diğer yolu da bunlara açıklayıcı adlar vermektir. Örneğin, makronun hizmet amacını daha ayrıntılı bir şekilde açıklamak için makroyu Etiketler yerine AyEtiketleri olarak adlandırabilirsiniz. Makrolar ve özel işlevler için açıklayıcı adlar kullanmak, özellikle çok sayıda yordam oluşturduğunuzda, özellikle de amaçları birbirine benzeyen ancak aynı olmayan yordamlar oluşturduğunuzda yararlı olur.

Makrolarınızı ve özel işlevlerinizi nasıl belgeleyeceğiniz kişisel bir tercihtir. Önemli olan, bazı dokümantasyon yöntemlerini benimsemek ve tutarlı bir şekilde kullanmaktır.

Özel işlevlerinizi her yerde kullanılabilir hale getirme

Özel bir işlev kullanmak için, işlevi oluşturduğunuz modülü içeren çalışma kitabının açık olması gerekir. Çalışma kitabı açık değilse, #NAME? hatasıyla karşılaşabilirsiniz. Farklı bir çalışma kitabındaki işleve başvuruyorsanız, işlev adından önce işlevin bulunduğu çalışma kitabının adını yazmanız gerekir. Örneğin, Personal.xlsb adlı çalışma kitabında İNDİRİM adlı bir işlev oluşturursanız ve bu işlevi başka bir çalışma kitabından çağırırsanız, yalnızca =discount() değil =personal.xlsb!discount() yazmanız gerekir.

İşlev Ekle iletişim kutusundan kendi özel işlevlerinizi seçerek tuş vuruşlarından (ve olası yazım hatalarından) kurtulabilirsiniz. Özel işlevleriniz Kullanıcı Tanımlı kategorisinde görünür:

işlev ekle iletişim kutusu

Özel işlevlerinizi her zaman kullanabilmenizi sağlamanın daha kolay bir yolu, bu işlevleri ayrı bir çalışma kitabında depolayıp sonra bu çalışma kitabını eklenti olarak kaydetmektir. Böylece, Excel'i her çalıştırdığınızda eklentiyi kullanılabilir duruma getirebilirsiniz. Bunu şöyle yapabilirsiniz:

  1. İhtiyacınız olan işlevleri oluşturduktan sonra, Dosyala>Farklı Kaydet'i tıklatın.
  2. Farklı Kaydet iletişim kutusunda, Kayıt Türü açılan listesini açın ve Excel Eklentisi'ni seçin. Çalışma kitabını Eklentiler klasörüne, İşlevlerim gibi tanınabilir bir adla kaydedin. Farklı Kaydet iletişim kutusu bu klasörü önereceğinden, tek yapmanız gereken varsayılan konumu kabul etmektir.
  3. Çalışma kitabını kaydettikten sonra Dosya>Excel Seçenekleri'ni tıklatın.
  4. Excel Seçenekleri iletişim kutusunda Eklentiler kategorisine tıklayın.
  5. Yönet açılan listesinde Excel Eklentileri'ni seçin. Ardından Git düğmesini tıklayın.
  6. Eklentiler iletişim kutusunda, çalışma kitabınızı kaydederken kullandığınız adın yanındaki onay kutusunu aşağıda gösterildiği gibi seçin.
    eklentiler iletişim kutusu

Bu adımları izledikten sonra, Excel'i her çalıştırdığınızda özel işlevleriniz kullanılabilir durumda olur. İşlev kitaplığınıza eklemek istiyorsanız, Visual Basic Düzenleyicisi'ne dönün. Visual Basic Düzenleyicisi Proje Gezgini'nde bir VBAProject başlığının altına bakarsanız, eklenti dosyanızın adını taşıyan bir modül görürsünüz. Eklentinizin uzantısı .xlam olacaktır.

vbe'de adlandırılmış modül Proje Gezgini'nde bu modülün çift tıklatılması, Visual Basic Düzenleyicisi'nin işlev kodunuzu görüntülemesine neden olur. Yeni işlev eklemek için, ekleme noktanızı Kod penceresindeki son işlevi sonlandıran İşlevi Sonlandır deyiminin arkasına getirin ve yazmaya başlayın. Bu şekilde gerektiği kadar çok işlev oluşturabilirsiniz ve bunlar her zaman İşlev Ekle iletişim kutusundaki Kullanıcı Tanımlı kategorisinde kullanılabilir olacaktır.

Yazarlar hakkında

Bu içerik ilk olarak Mark Dodge ve Craig Stinson tarafından Microsoft Office Excel 2007 Inside Out adlı kitaplarının bir parçası olarak yazılmıştır. O zamandan beri Excel'in daha yeni sürümlerine de uygulanacak şekilde güncelleştirilmiştir.

Daha fazla yardım mı gerekiyor?

Dilediğiniz zaman Excel Teknoloji Topluluğundaki uzmanlara sorabilir veya Topluluklar'dan destek alabilirsiniz.