VBA Sertai - Langkah demi Langkah Fungsi Gabung Excel VBA

Mirip dengan apa yang kita miliki di lembar kerja seperti fungsi Concatenate dan perintah & yang digunakan untuk menggabungkan dua atau lebih dari dua rentetan bersama, di VBA kita menggunakan perintah Join untuk melakukannya, dalam Join in VBA kita mengambil sumber data dalam array dan serupa dengan gabungan kami menggunakan pembatas untuk bergabung dengan mereka.

Fungsi GABUNGAN VBA Excel

Seperti namanya sendiri, fungsi VBA JOIN digunakan untuk menyatukan array substring dengan pembatas yang ditentukan. Sekiranya kita tidak menentukan pembatas, maka ia mengambil 'ruang' sebagai watak pembatas lalai. Ia berfungsi sama seperti fungsi Concatenate di Excel kecuali kita harus menentukan watak pembatas hanya sekali sedangkan, dalam fungsi Concatenate, kita harus menentukan watak pembatas setiap kali di antara setiap dua rentetan.

Sintaks fungsi adalah

Seperti yang kita lihat, fungsi ini mengambil dua argumen dan mengembalikan rentetan. Hujah adalah:

  1. SourceArray : Kita perlu menentukan atau memberikan rujukan kepada array substring yang akan digabungkan.
  2. Pembatas : Pembatas digunakan untuk memisahkan setiap substring ketika membuat rentetan yang dihasilkan. Oleh kerana ini adalah argumen pilihan, jika kita menghilangkannya, pembatas ditetapkan sebagai ruang "".

Fungsi VBA SPLIT adalah fungsi bertentangan dengan fungsi VBA JOIN.

Contoh Fungsi Gabung VBA

Berikut adalah contoh fungsi bergabung dalam Excel VBA.

Sambungan VBA - Contoh # 1

Andaikan, kita mahu bergabung dengan nama pertama (Ramesh), tengah (Kumar), dan nama belakang (Mishra).

Langkahnya adalah:

  • Pertama, kita perlu membuka editor asas visual. Kita boleh melakukan perkara yang sama dengan mengklik perintah 'Visual Basic' dalam kumpulan 'Code' di bawah excel tab 'Developer' atau kita boleh menggunakan kekunci pintasan excel Alt + F11 .
  • Masukkan modul dengan mengklik kanan pada "helaian 1" dan memilih perintah 'Masukkan' dari menu kontekstual dan kemudian pilih 'Modul' untuk dimasukkan.
  • Buat subrutin bernama 'JoiningName'.

Kod:

Sub JoiningName () End Sub
  • Gunakan fungsi GABUNG seperti berikut

Kod:

Sub JoiningName () Range ("D2"). Value = Join (Array ("Ramesh", "Kumar", "Mishra")) End Sub

Kita dapat melihat bahawa kita telah menggunakan fungsi ARRAY untuk menyediakan SourceArray ke fungsi JOIN dan dilangkau untuk menentukan watak pembatas sehingga 'spasi' akan menjadi watak lalai. Nilai yang diproses dari fungsi JOIN akan ditulis dalam sel D2 ketika kita melaksanakan kod ini menggunakan kunci F5 atau secara manual.

Sambungan VBA - Contoh # 2

Katakanlah, kami ingin membuat pelbagai fail excel dengan nama item yang mengandungi penjualan hanya untuk item tersebut.

  • Buka Editor Visual Basic menggunakan kekunci pintas Alt + F11.
  • Klik kanan pada helaian 'Sheet1 ′ (Contoh 2)' untuk membuka menu kontekstual dan klik pada 'Insert' untuk memasukkan VBA 'Module' dalam projek VBA.
  • Tentukan subrutin bernama 'CreateItemSoldFiles'.

Kod:

Sub CreateItemSoldFiles () Akhir Sub
  • Kita perlu menetapkan referensi ke perpustakaan objek 'Microsoft Scripting Runtime' menggunakan menu Tools -> References … perintah, kerana kita akan menggunakan beberapa kod (objek), yang tidak akan berfungsi jika kita tidak memasukkan perpustakaan objek ini.
  • Sekarang kita akan menyatakan semua pemboleh ubah.

Kod:

Dim FSO Sebagai Skrip Baru.FileSystemObject

Pemboleh ubah FSO di atas memberi akses ke VBA FileSystemObject. Setelah mengikat, kita dapat menggunakan fungsi seperti BuildPath, CopyFile, CreateTextFile, dll.

  • Pernyataan seterusnya membuat objek TextStream. Melalui objek TextStream, kita dapat membaca dari atau menambahkan ke fail asalnya.

Kod:

Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream
  • We will declare more variables. ‘r’ is for holding rows in the range, ‘fs’ is for storing final joined string, ‘cols’ for storing numbers of columns in the range, ‘FolPath’ for storing the path of the folder so that we can save the files in the folder and ‘Items_Sold’ for storing various item names to create a file with these names.

Code:

Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String
  • To count the total number of columns in range, we will define the following statement.

Code:

cols = Range("A1").CurrentRegion.Columns.Count

This statement will first select the current region for cell A1 and then will count the total number of columns in the current region.

  • We will write the following statements for assigning the variable ‘FolPath’ a path using VBA ENVIRON function and Concatenation Operator.

Code:

FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath

The second statement will create the folder if the folder does not exist in the same location.

  • This code will assign the values of B column one by one to ‘Items_Sold’ We have used ‘OFFSET function’ to get the reference of cell in B column as the currently selected cell is in column A.

Code:

Items_Sold = r.Offset(0, 1).Value
  • The following bordered statement will open the files with names stored in ‘Items_Sold’ variable in one by one in appending mode (the new values will be appended at last).

Code:

Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True)

We have used Concatenate operator with variables ‘FolPath’ and ‘Items_Sold’ and static values (“” and”.xls”) to create file names for excel files.

  • We need to keep in mind that VBA JOIN function takes an only one-dimensional array as SourceArray To convert the rows into a one-dimensional array, we need to use Application.Transpose method two times.

Code:

fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab)

We have used the Resize method of range object to resize the range to the width of a number of columns in the range.

As delimiter, we have used ‘vbTab’ keyword so that values would be filled in different cells.

  • As we have stored the processed value of JOIN function into ‘fs’ variable, we will write the fs’s values into new lines of VBA created excel files for every row in our original file from row number 2 to the last row (in our case it is 350th row).
  • Before ending the loop, we will close the file opened. The code would be as shown in the screenshot.

We have written the full code now.

Code:

Sub CreateItemSoldFiles() Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String cols = Range("A1").CurrentRegion.Columns.Count FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath For Each r In Range("A2", Range("A1").End(xlDown)) Items_Sold = r.Offset(0, 1).Value Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True) fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab) ts.WriteLine fs ts.Close Next r End Sub

Sekarang untuk melaksanakan kod, kita akan menekan F5 kemudian, kita dapat melihat bahawa folder bernama 'Items_Sold' telah dibuat dengan bantuan kod VBA di desktop.

Di dalam folder tersebut, terdapat 7 fail unik yang dibuat dengan nama item tersebut dan kita dapat mengetahui perincian hanya mengenai item tersebut dalam fail.

Komputer riba.xls

Perkara Yang Perlu Diingati Mengenai Fungsi SERTAI VBA

  • The SourceArray perlu menjadi array satu dimensi. Kami tidak boleh merujuk kepada sel individu, kerana ini akan membuat pelbagai tatasusunan pelbagai dimensi.
  • Sekiranya kita menentukan rentetan panjang sifar (“”) sebagai pembatas, semua item dalam array digabungkan tanpa pembatas.

Artikel menarik...