Diziyi Döndürmek için VBA İşlevi Oluşturun

Başlıktan da anlaşılacağı gibi, Excel'de bir dizi döndüren kullanıcı tanımlı bir işlevin nasıl oluşturulacağını öğreneceğiz. VBA'da kullanıcı tanımlı bir fonksiyonun nasıl oluşturulacağını zaten öğrendik. O halde vakit kaybetmeden eğitimimize başlayalım.

Dizi İşlevi nedir?

Dizi işlevleri, kullanıldığında bir dizi döndüren işlevlerdir. Bu işlev CTRL+SHIFT+ENTER tuş kombinasyonları ile kullanılır ve bu nedenle dizi işlevini veya formülleri CSE işlevi ve formülleri olarak çağırmayı tercih ederiz.

Excel dizi işlevi genellikle çok hücreli dizi formülleridir. Bir örnek, TRANSPOSE işlevidir.

VBA'da bir UDF dizisi işlevi oluşturma

Yani senaryo şu ki, ThreeEven() işlevini kullanarak ilk 3 çift sayıyı döndürmek istiyorum.

Kod şöyle görünecek.

ThreeEven() As Integer() 'diziyi tanımla Dim sayılar(2) As Integer 'Dizi sayılarına değer ata(0) = 0 sayı(1) = 2 sayı(2) = 4 'dönüş değerleri ThreeEven = sayılar Son İşlev 

Bu fonksiyonu çalışma sayfasında kullanalım.

Görüyorsunuz, önce üç hücre seçiyoruz (yatay olarak, dikey için iki boyutlu dizi kullanmamız gerekiyor. Aşağıda ele aldık.). Daha sonra formülümüzü yazmaya başlıyoruz. Ardından CTRL+SHIFT+ENTER tuşlarına basıyoruz. Bu, seçili hücreleri dizi değerleriyle doldurur.

Not:

  • Pratikte, kaç hücreye ihtiyacınız olacağını bilemezsiniz. Bu durumda her zaman beklenen dizi uzunluğundan daha fazla hücre seçin. İşlev, hücreleri diziyle dolduracak ve fazladan hücreler #YOK hatası gösterecektir.
  • Varsayılan olarak, bu dizi işlevi, yatay bir dizideki değerleri döndürür. Dikey hücreleri seçmeye çalışırsanız, tüm hücreler dizinin yalnızca ilk değerini gösterecektir.

Nasıl çalışır?

Bir dizi işlevi oluşturmak için bu sözdizimini izlemeniz gerekir.

fonksiyon functionName(değişkenler) As returnType() olarak dim resultArray(uzunluk) as dataType 'Burada diziye değer atayın functionName =resultArray Bitiş Fonksiyon 

Fonksiyon bildirimi yukarıda tanımlandığı gibi olmalıdır. Bu, bunun bir dizi işlevi olduğunu bildirdi.
Çalışma sayfasında kullanırken CTRL+SHIFT+ENTER tuş kombinasyonunu kullanmanız gerekmektedir. Aksi takdirde, dizinin yalnızca ilk değerini döndürür.

Dikey Diziyi Döndürmek için VBA Dizi İşlevi

UDF dizi işlevinizin dikey olarak çalışmasını sağlamak için fazla bir şey yapmanıza gerek yoktur. Dizileri iki boyutlu bir dizi olarak bildirmeniz yeterlidir. Ardından ilk boyutta değerleri ekleyin ve diğer boyutu boş bırakın. Bunu şu şekilde yaparsınız:

Fonksiyon ThreeEven() As Integer() 'diziyi tanımla Dim sayılar(2,0) As Integer 'Dizi sayılarına değer ata(0,0) = 0 sayı(1,0) = 2 sayı(2,0) = 4' dönüş değerleri ThreeEven = sayılar End Function 

Çalışma sayfasında bu şekilde kullanırsınız.

Excel'de Bağımsız Değişkenlerle UDF Dizi İşlevi

Yukarıdaki örneklerde, sadece toplam statik değerleri sayfaya yazdırdık. Diyelim ki fonksiyonumuzun bir aralık argümanını kabul etmesini, üzerinde bazı işlemler yapmasını ve sonuçtaki diziyi döndürmesini istiyoruz.

Örnek Aralıktaki her değere "-done" ekleyin

Şimdi, bunun kolayca yapılabileceğini biliyorum, ancak size sorunları çözmek için kullanıcı tanımlı VBA dizi işlevlerini nasıl kullanabileceğinizi göstermek için.

Yani, burada argüman olarak bir aralık alan ve aralıktaki her değere "-done" ekleyen bir dizi işlevi istiyorum. Bu, birleştirme işlevi kullanılarak kolayca yapılabilir, ancak burada bir dizi işlevi kullanacağız.

Function CONCATDone(rng As Range) As Variant() Dim resulArr() As Variant 'Create a collection Dim col As New Collection 'Hatada Devam Et Sonraki Her v In rng col.Add v Sonraki Hatada GoTo 0' her bir değer üzerinde işlemi tamamlama ve bunları ReDim Dizisine ekleme resulArr(col.Count - 1, 0) For i = 0 To col.Count - 1 resulArr(i, 0) = col(i + 1) & "-done" Sonraki CONCATDone = resulArr Bitiş İşlevi 

Açıklama:

Yukarıdaki işlev, bir aralığı argüman olarak kabul edecek ve aralıktaki her bir değere "-done" ekleyecektir.

Burada dizinin değerlerini tutmak için bir VBA koleksiyonu kullandığımızı ve ardından her bir değer üzerinde işlemimizi yapıp iki boyutlu bir diziye geri eklediğimizi görebilirsiniz.

Evet çocuklar, bir dizi döndürebilecek özel bir VBA dizisi işlevi bu şekilde oluşturabilirsiniz. Umarım yeterince açıklayıcı olmuştur. Bu makaleyle ilgili herhangi bir sorunuz varsa, aşağıdaki yorumlar bölümüne yazın.

Çalışma dosyasını indirmek için aşağıdaki bağlantıya tıklayın:

Diziyi Döndürmek için VBA İşlevi Oluşturun

Excel'de Diziler Formül|Excel'de dizilerin ne olduğunu öğrenin.

VBA ile Kullanıcı Tanımlı İşlev Nasıl Oluşturulur | Excel'de kullanıcı tanımlı işlevlerin nasıl oluşturulacağını öğrenin

Microsoft Excel'de VBA kullanarak başka bir çalışma kitabından Kullanıcı Tanımlı İşlev (UDF) Kullanma | Excel'in başka bir çalışma kitabında kullanıcı tanımlı işlevi kullanın

Microsoft Excel'de VBA kullanarak kullanıcı tanımlı işlevlerden hata değerleri döndürme | Kullanıcı tanımlı bir işlevden nasıl hata değerleri döndürebileceğinizi öğrenin

Popüler Makaleler:

Verimliliğinizi Artıracak 50 Excel Kısayolu

Excel'de DÜŞEYARA İşlevi

Excel 2016'da EĞERSAY

Excel'de SUMIF İşlevi Nasıl Kullanılır

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave