Excel VBA JOIN işlevi, belirtilen bir sınırlayıcıya sahip alt dizelerden oluşan bir diziyi birleştirmek ve sonuç olarak tek bir dize döndürmek için kullanılır. VBA işlevlerinin Dizi kategorisi altında listelenir ve Concatenate çalışma sayfası işlevi gibi birden fazla dizeyi tek bir dizede birleştirebilir.
VBA Join ArrayList'in basit bir örneğini görelim:

Dizelerden oluşan bir diziyi (bu durumda adlar) bildirmek için bir alt rutin oluşturun ve ardından bu dizelerin VBA Join koleksiyonunu, ayırma değeri ',' olarak kabul edilerek gerçekleştirin. Çıktıyı bir Mesaj Kutusunda yazdırın.

- VBA Join fonksiyonu, belirtilen bir ayırıcıya sahip alt dizelerden oluşan bir diziyi birleştirmek ve sonuçta tek bir dize döndürmek için kullanılır.
- Fonksiyonun sözdizimi Join(SourceArray, [Delimiter]) şeklindedir; burada SourceArray, yeni bir dize olarak birleştirmek istediğiniz değer dizisidir ve [Delimiter], yeni dizeyi oluştururken alt dizelerin her birini ayırmak için kullanmak istediğiniz bir ayraçtır.
- VBA Join Arraylist için iki diziyi birleştirmeye yarayan yerleşik bir fonksiyon yoktur.
- İki diziyi birleştirmek için Join işlevini kullanarak her diziyi bir dizeye dönüştürebilir, dizeleri birleştirebilir ve ardından Split işlevini kullanarak birleştirilen dizeyi tekrar diziye dönüştürebilirsiniz.
- VBA'da iki tabloyu birleştirmek için ölçütleri, VLOOKUP veya INDEX MATCH formüllerini veya Power Query veya Birleştirme Tabloları Sihirbazı'nı kullanarak verileri ve tabloları birleştiren makroları kullanabilirsiniz.
Sözdizimi
VBA Join'in söz dizimi aşağıda gösterildiği gibidir:
Join(SourceArray, [Delimiter])
Nerede,
- SourceArray, yeni bir dize olarak birleştirmek istediğiniz değerlerin dizisidir.
- [Ayırıcı], yeni dizeyi oluştururken alt dizelerin her birini ayırmak için kullanmak isteyeceğiniz bir ayırıcıdır.
Excel VBA JOIN Fonksiyonu Nasıl Kullanılır?
VBA Join sütunlarını doğru şekilde kullanmak için aşağıdaki adımları izleyin.
Adım 1: Excel Çalışma Kitabını açın. Araç çubuğunda “Geliştirici”yi seçin.

Geliştirici'de, en sol köşede "Visual Basic"i seçin.

VBA Editörünü açar.

Editörde araç çubuğundan “Ekle” düğmesini seçin ve açılır menüden “Modül”ü seçin.

Çalışma kitabınız için alt rutinler oluşturarak başlayın.
Adım 2: Alt rutinin adını tanımlayarak başlayın.

Adım 3: 0-4 aralığında bir dizi başlatın.

Diziyi Dize veri türü olarak bildirmek önemlidir, çünkü VBA Join fonksiyonu diğer veri türleri (Tamsayı veya Değişken) için hata verecektir.
Adım 4: Dizinin değerlerini VBA'da karşılık gelen hücre değerleriyle tanımlayın.

Bahsi geçen değerler çalışma sayfasında daha önce tanımlanmıştır.

Adım 5: Verilen dizi değerleri üzerinde VBA Join koleksiyonunu gerçekleştirin ve bunu “A7” hücresine yazdırın.

Herhangi bir ayırıcı belirtilmediği için varsayılan ayırma değeri boşluktur.
Kod:
Sub Example_JOIN()
Dim myAry(0 To 4) As String
myAry(0) = Range(“A1”)
myAry(1) = Range(“A2”)
myAry(2) = Range(“A3”)
myAry(3) = Range(“A4”)
myAry(4) = Range(“A5”)
Range(“A7”).Değer = Join(myAry)
End Sub
Adım 6: Programı çalıştırmak için Excel VBA Modülündeki etkinlik çubuğundaki “F5” veya “Çalıştır” simgesine tıklayın.

Artık Excel VBA'da Join fonksiyonunun nasıl kullanılacağını öğrendiğimize göre, aşağıda bazı heyecan verici örneklere bakalım.
Örnekler
Burada, VBA birleştirme aralığının farklı şekillerde nasıl kullanılabileceğini görebiliriz.
Örnek 1
Bir e-posta listesi verildiğinde, bunları bir araya getirip bir mesaj kutusunda görüntülemek istersiniz. Bu, VBA Join kullanılarak yapılabilir.

Adım 1: E-postaları birleştirip hepsini birlikte görüntülemek için alt rutinin adını başlatarak başlayın.

Adım 2: Çalışma kitabında kontrol edeceğimiz e-postaların aralığını tutacak bir Aralık değişkeni başlatın.

Adım 3: Kontrol etmek istediğiniz e-postaların aralığını belirtin.

Adım 4: VBA'da bir dize dizisi tanımlayın.

Adım 5: Adım 4'te tanımlanan dize dizisinin boyutunu aralıktaki hücre sayısına göre tanımlayın.

Excel aralığı 1-5 arasında gittiği için bir ile çıkarılır, ancak bir dizinin aralığı 0'dan başlar. Dolayısıyla, yalnızca beş değere sahip 0-4 boyutuna ihtiyacınız vardır.
Adım 6: FOR döngüsünde kullanılacak yinelemeli bir değişken başlatın.

Adım 7: E-postaları içeren hücre değerlerini dize dizisine eklemek için bir FOR döngüsü oluşturun.

i 0'dan başladığı için Excel'de hücre değerlerini bulmak için döngüye alırken bir ekliyoruz.
Adım 8: VBA Join toplama işlemini gerçekleştirdikten sonra birleştirilmiş değerleri tutacak bir dize değişkeni başlatın.

Adım 9: Ayrım değerini “;” olarak tanımlayarak dize dizisiyle VBA Birleştirme işlemini gerçekleştirin.

Kod:
Sub email_JOIN()
Dim emailList As Range
Set emailList = Range(“A1:A5”)
Dim emails() As String
ReDim emails(emailList.Cells.Count – 1)
Dim i As Integer
For i = 0 To emailList.Cells.Count – 1
emails(i) = emailList.Cells(i + 1).Value
Next i
Dim emailString As String
emailString = Join(emails, “; “)
MsgBox emailString
End Sub
Adım 10: Kodu çalıştırmak için “F5” tuşuna basın. Birleştirilmiş değerleri göstermek için bir Mesaj Kutusu açılır.

Örnek 2
Burada, belirli bir aralıktaki tüm kullanılabilir dizinleri birleştirmemiz ve VBA Join Range gerçekleştirmemiz gerekiyor. Tablo aşağıda verilmiştir.

Aşağıdaki adımları izleyerek tüm hücre değerlerini birleştirebilirsiniz.
Adım 1: Tüm dizinleri birleştirmek için alt prosedürü adlandırarak başlayın.

Adım 2: VBA Join işlemini gerçekleştirmek istediğimiz hücre aralığını depolamak için bir aralık değişkeni tanımlayın.

Adım 3: Aralık değişkenini istediğiniz aralıkla ayarlayın.

Adım 4: Bir dize dizisi başlatın ve doğru boyutu elde etmek için bildirilen hücre aralığını sayarak ve bundan 1 çıkararak boyutunu hesaplayın.

VBA'da değişken-çalışma kitabı aralığı uyumsuzluğundan kaynaklanan " Aralık Dışı " hatalarının önlenmesi için yapılır .
Adım 5: Dize dizisinde çalışacak yinelemeli bir değişken başlatın.

Adım 6: Mevcut güne eklenecek değerleri, yani gün sayısını ve saat sayısını başlatın.

Adım 7: Hücrelerdeki dizinleri diziye eklemek için bir FOR döngüsü bildirin.

Adım 8: VBA Birleştirme aralığından sonra birleştirilmiş değerlerde saklanacak bir dize değişkeni tanımlayın.

Adım 9: Dize dizisi üzerinde VBA Join işlemini gerçekleştirin ve ardından Immediate sekmesinde değerleri yazdırın.

Ayırıcı/ayırma değerini vbCrLf olarak bildirin.
Bu, VBA'da yeni bir satır tanımlamak için kullanılan bir sabittir.
Kod:
Sub dir_JOIN()
Dim pathList As Range
Set pathList = Range(“A1:A10”)
Dim paths() As String
ReDim paths(pathList.Cells.Count – 1)
Dim i As Integer
For i = 0 To pathList.Cells.Count – 1
paths(i) = pathList.Cells(i + 1).Value
Next i
Dim pathString As String
pathString = Join(paths, vbCrLf)
Debug.Print pathString
End Sub
Adım 9: Kodu çalıştırmak istediğinizde yeşil ok düğmesine tıklayın. Bu, Immediate sekmesindeki tüm değerleri yazdıracaktır.

Dikkat Edilmesi Gereken Önemli Noktalar
- Dizi tarih veya değişken VBA veri türü olarak bildirilirse JOIN fonksiyonu çalışmaz .
- JOIN fonksiyonunu kullanmak için, birleştirmek istediğiniz değerlerden oluşan bir dizi bildirmeniz ve ardından bunu JOIN fonksiyonuna argüman olarak geçirmeniz gerekir.
- Excel çalışma sayfasındaki bir hücre aralığındaki değerlerle diziyi doldurmak için bir döngü kullanabilirsiniz.
- İstenilen sonucu ürettiğinden emin olmak için kodunuzu iyice test ettiğinizden emin olun.
- Ayırıcı atlanırsa, varsayılan ayraç boşluktur ” “.
- Tabloları birleştirmeden önce, verileri eşleştirmek için kullanılabilecek ortak bir alan veya sütuna sahip olduklarından emin olun.
