İçindekiler
Bugün özel Excel işlevlerini keşfetmeye devam edeceğiz. UDF'lerin nasıl oluşturulacağını zaten bildiğiniz için (ve umarım bunları Excel'inizde uygulamayı da denemişsinizdir), biraz daha derine inelim ve Excel'de kullanıcı tanımlı işlevlerin nasıl kullanılacağını ve saklanacağını öğrenelim.
Ayrıca, fonksiyonlarınızı daha sonra birkaç tıklamayla kullanmak için bir Excel eklenti dosyasına nasıl kolayca kaydedeceğinizi göstereceğiz.
İşte konuşacağımız konu:
Excel'de UDF kullanmanın farklı yolları
Çalışma sayfalarında UDF'leri kullanma
UDF'lerinizin doğru çalıştığını doğruladıktan sonra, bunları Excel formüllerinde veya VBA kodunda kullanabilirsiniz.
Özel işlevleri bir Excel çalışma kitabında normal işlevleri kullandığınız şekilde uygulayabilirsiniz. Örneğin, bir hücreye aşağıdaki formülü yazmanız yeterlidir:
= GetMaxBetween(A1:A6,10,50)
UDF normal fonksiyonlarla birlikte kullanılabilir. Örneğin, hesaplanan maksimum değere metin ekleyin:
= CONCATENATE("10 ile 50 arasındaki maksimum değer ", GetMaxBetween(A1: A6,10,50))
Sonucu aşağıdaki ekran görüntüsünde görebilirsiniz:
Hem maksimum olan hem de 10 ila 50 aralığında olan sayıyı bulabilirsiniz.
Başka bir formülü kontrol edelim:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Özel fonksiyon GetMaxBetween B2:B9 aralığını kontrol eder ve 10 ile 50 arasındaki maksimum sayıyı bulur. Ardından, INDEX + MATCH kullanarak bu maksimum değerle eşleşen ürün adını alırız:
Gördüğünüz gibi, özel fonksiyonların kullanımı normal Excel fonksiyonlarından çok farklı değildir.
Bunu yaparken, kullanıcı tanımlı bir fonksiyonun yalnızca bir değer döndürebileceğini, ancak başka herhangi bir eylem gerçekleştiremeyeceğini unutmayın. Kullanıcı tanımlı fonksiyonların kısıtlamaları hakkında daha fazla bilgi edinin.
VBA yordamlarında ve işlevlerinde UDF kullanma
UDF'ler VBA makrolarında da kullanılabilir. Aşağıda, etkin hücreyi içeren sütunda 10 ila 50 aralığındaki maksimum değeri arayan makro kodunu görebilirsiniz.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubMakro kodu özel işlevi içerir
GetMaxBetween(.Cells, 10, 50)
Etkin sütundaki maksimum değeri bulur. Bu değer daha sonra vurgulanacaktır. Makronun sonucunu aşağıdaki ekran görüntüsünde görebilirsiniz.
Özel bir fonksiyon başka bir özel fonksiyonun içinde de kullanılabilir. Blogumuzun önceki bölümlerinde, aşağıdaki özel fonksiyonu kullanarak bir sayıyı metne dönüştürme sorununa bakmıştık BüyüNumarası .
Yardımıyla, aralıktan maksimum değeri alabilir ve hemen metin olarak yazabiliriz.
Bunu yapmak için, fonksiyonları kullanacağımız yeni bir özel fonksiyon oluşturacağız GetMaxBetween ve BüyüNumarası zaten aşina olduğumuz şeyler.
Function SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionGördüğünüz gibi GetMaxBetween işlevi başka bir özel işlevin bağımsız değişkenidir, BüyüNumarası Daha önce birçok kez yaptığımız gibi maksimum değeri tanımlar. Bu sayı daha sonra metne dönüştürülür.
Yukarıdaki ekran görüntüsünde SpellGetMaxBetween fonksiyonu 100 ile 500 arasındaki maksimum sayıyı bulur ve ardından bunu metne dönüştürür.
Diğer çalışma kitaplarından UDF çağırma
Çalışma kitabınızda UDF oluşturduysanız, bu ne yazık ki hiçbir sorunla karşılaşmayacağınız anlamına gelmez.
Deneyimlerime göre, çoğu kullanıcı er ya da geç bireysel süreçleri ve hesaplamaları otomatikleştirmek için kişisel makro ve özel fonksiyon koleksiyonlarını oluşturuyor. Ve burada sorun ortaya çıkıyor - Visual Basic'teki kullanıcı tanımlı fonksiyonların kodunun daha sonra işte kullanılmak üzere bir yerde saklanması gerekiyor.
Özel işlevi uygulamak için, kaydettiğiniz çalışma kitabı Excel'inizde açık olmalıdır. Değilse, kullanmaya çalışırken #ADI! hatası alırsınız. Bu hata, Excel'in formülde kullanmak istediğiniz işlevin adını bilmediğini gösterir.
Oluşturduğunuz özel fonksiyonları hangi şekillerde kullanabileceğinize bir göz atalım.
Yöntem 1. Çalışma kitabı adını işleve ekleyin
İşlevin adından önce içinde bulunduğu çalışma kitabının adını belirtebilirsiniz. Örneğin, özel bir işlevi kaydettiyseniz GetMaxBetween() adlı bir çalışma kitabında My_Functions.xlsm sonra aşağıdaki formülü girmeniz gerekir:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Yöntem 2. Tüm UDF'leri tek bir ortak dosyada saklayın
Tüm özel işlevleri özel bir çalışma kitabına kaydedin (örneğin, My_Functions.xlsm ) ve gerekirse istediğiniz işlevi buradan geçerli çalışma kitabına kopyalayın.
Her yeni özel işlev oluşturduğunuzda, kodunu kullanacağınız çalışma kitabında çoğaltmanız gerekir. Bu yöntemle, çeşitli sakıncalar ortaya çıkabilir:
- Çok sayıda çalışma dosyası varsa ve işlev her yerde gerekliyse, kodun her kitaba kopyalanması gerekecektir.
- Çalışma kitabını makro etkin bir biçimde (.xlsm veya .xlsb) kaydetmeyi unutmayın.
- Böyle bir dosyayı açarken, makrolara karşı koruma her seferinde onaylanması gereken bir uyarı görüntüler. Birçok kullanıcı makroları etkinleştirmelerini isteyen sarı çubuk uyarısını görünce korkar. Bu mesajı görmekten kaçınmak için Excel korumasını tamamen devre dışı bırakmanız gerekir. Ancak bu her zaman doğru ve güvenli olmayabilir.
Her zaman bir dosya açmanın ve kullanıcı tanımlı işlevlerin kodunu ondan kopyalamanın veya bu dosyanın adını bir formüle yazmanın en iyi çözüm olmadığı konusunda bana katılacağınızı düşünüyorum. böylece üçüncü yola geldik.
Yöntem 3. Bir Excel eklenti dosyası oluşturun
Bence en iyi yol, sık kullanılan özel işlevleri bir Excel eklenti dosyasında saklamaktır. Eklenti kullanmanın avantajları:
- Eklentiyi Excel'e yalnızca bir kez bağlamanız gerekir. Bundan sonra, prosedürlerini ve işlevlerini bu bilgisayardaki herhangi bir dosyada kullanabilirsiniz. Çalışma kitaplarınızı .xlsm ve .xlsb biçimlerinde kaydetmenize gerek yoktur, çünkü kaynak kodu bunlarda değil, eklenti dosyasında saklanacaktır.
- Eklentiler her zaman güvenilir kaynaklara başvurduğu için artık makro korumasından rahatsız olmayacaksınız.
- Bir eklenti ayrı bir dosyadır. Bilgisayardan bilgisayara aktarmak, iş arkadaşlarınızla paylaşmak kolaydır.
Eklenti oluşturma ve kullanma hakkında daha sonra konuşacağız.
Özel işlevleri saklamak için eklentileri kullanma
Kendi eklentimi nasıl oluşturabilirim? Bu süreci adım adım inceleyelim.
Adım 1. Eklenti dosyasını oluşturun
Microsoft Excel'i açın, yeni bir çalışma kitabı oluşturun ve eklenti biçiminde uygun bir adla (örneğin, My_Functions) kaydedin. Bunu yapmak için menüyü kullanın Dosya - Farklı Kaydet veya F12 tuşuna basın. Dosya türünü belirttiğinizden emin olun Excel Eklentisi :
Eklentiniz .xlam uzantısına sahip olacaktır.
İpucu: Excel'in varsayılan olarak eklentileri C:\Users\[Your_Name]\AppData\Roaming\Microsoft\AddIns Varsayılan konumu kabul etmenizi öneririm. İsterseniz başka bir klasör belirtebilirsiniz. Ancak daha sonra eklentiyi bağlarken yeni konumunu manuel olarak bulmanız ve belirtmeniz gerekecektir. Varsayılan klasöre kaydederseniz, eklentiyi bilgisayarınızda aramanıza gerek kalmaz. Excel otomatik olarak listeleyecektir.
Adım 2. Eklenti dosyasını bağlayın
Şimdi oluşturduğumuz eklentinin Excel'e bağlanması gerekiyor. Daha sonra program başladığında otomatik olarak yüklenecektir. Bunu yapmak için menüyü kullanın Dosya - Seçenekler - Eklentiler . emin olun Excel Eklentileri içinde seçilir Yönetmek alanına tıklayın. Git penceresinin altındaki düğmesine tıklayın. Görünen pencerede My_Functions eklentimizi işaretleyin. Listede göremiyorsanız Gözat düğmesine basın ve eklenti dosyanızın konumuna göz atın.
Özel işlevleri saklamak için bir eklenti kullanıyorsanız, uymanız gereken basit bir kural vardır. Çalışma kitabını başka bir kişiye aktarıyorsanız, istediğiniz işlevleri içeren eklentinin bir kopyasını da aktardığınızdan emin olun. Şimdi yaptığınız gibi aynı şekilde bağlamalıdırlar.
Adım 3. Eklentiye özel işlevler ve makrolar ekleyin
Eklentimiz Excel'e bağlı, ancak henüz herhangi bir işlevi yok. Yeni UDF'ler eklemek için, Alt + F11 tuşlarına basarak Visual Basic Düzenleyicisini açın. Ardından, UDF'ler Oluşturma eğitimimde açıklandığı gibi VBA koduyla yeni modüller ekleyebilirsiniz.
Eklenti dosyanızı seçin ( My_Finctions.xlam ) VBAProject penceresinde kullanın. Ekleme - Modül Özel bir modül eklemek için menü. İçine özel işlevler yazmanız gerekir.
Kullanıcı tanımlı bir fonksiyonun kodunu elle yazabilir ya da bir yerden kopyalayabilirsiniz.
Hepsi bu. Artık kendi eklentinizi oluşturdunuz, Excel'e eklediniz ve içindeki UDF'yi kullanabilirsiniz. Daha fazla UDF kullanmak istiyorsanız, kodu VBA düzenleyicisindeki eklenti modülüne yazın ve kaydedin.
Bugünlük bu kadar. Çalışma kitabınızda kullanıcı tanımlı fonksiyonları nasıl kullanacağımızı öğrendik. Bu yönergeleri gerçekten yararlı bulacağınızı umuyoruz. Herhangi bir sorunuz varsa, bu makaleye yorum olarak yazın.