VBA Liitu - Exceli VBA liitumisfunktsiooni üksikasjalikud näited

Lang L: none (table-of-contents)

Sarnaselt sellele, mis meil on töölehel funktsiooni Liitmine ja käsuga &, mida kasutatakse kahe või enama stringi ühendamiseks, kasutame VBA-s selleks liituda, VBA-s liitumine võtame massiivi andmete allika ja sarnaselt liitumisele kasutame nende liitmiseks eraldajat.

Exceli VBA JOIN funktsioon

Nagu nimigi ütleb, kasutatakse funktsiooni VBA JOIN, et ühendada määratud eraldajaga alamstringide massiivi. Kui me ei määra eraldajat, võtab see vaikimisi eraldusmärgina "tühiku". See teeb sama tööd nagu funktsioon Liitmine Excelis, välja arvatud see, et piiritleja märgi peame määrama ainult ühe korra, samas kui funktsioonis Liitumine peame iga kahe stringi vahel iga kord eraldaja märgi määrama.

Funktsiooni süntaks on

Nagu näeme, võtab funktsioon kaks argumenti ja tagastab stringi. Argumendid on järgmised:

  1. SourceArray : peame määrama liidetavate alamstringide massiivi või viitama sellele.
  2. Eraldaja : eraldajat kasutatakse tulemuste stringi loomisel iga alamstringi eraldamiseks. Kuna see on valikuline argument, määratakse eraldaja, kui selle välja jätta, tühik "".

Funktsioon VBA SPLIT on funktsiooni VBA JOIN täiesti vastupidine funktsioon.

VBA liitumisfunktsiooni näited

Allpool on toodud Exceli VBA liitumisfunktsiooni näited.

VBA liitumine - näide 1

Oletame, et me tahame liituda ees- (Ramesh), keskmise (Kumar) ja perekonnanimega (Mishra).

Sammud oleksid:

  • Esiteks peame avama visuaalse põhiredaktori. Saame teha sama, kui klõpsate vahekaardi „Arendaja” all rühmas „Kood” käsku „Visual Basic” või võime kasutada Exceli kiirklahvi Alt + F11 .
  • Sisestage moodul, paremklõpsates lehel 1 ja tehes kontekstimenüüst käsu 'Lisa', seejärel valige lisamiseks 'Moodul'.
  • Looge alamprogramm nimega 'JoiningName'.

Kood:

Alam Liitumisnimi () Lõpeta alam
  • Kasutage funktsiooni JOIN järgmiselt

Kood:

Sub JoiningName () vahemik ("D2"). Väärtus = Join (massiiv ("Ramesh", "Kumar", "Mishra")) Lõpp alam

Näeme, et oleme funktsiooni JOIN pakkumiseks SourceArray pakkunud funktsiooni ARRAY ja eraldaja märgi määramiseks jätsime vahele, nii et vaiketäheks oleks „tühik”. Funktsiooni JOIN töödeldud väärtus kirjutatakse lahtrisse D2, kui täidame selle koodi klahvi F5 abil või käsitsi.

VBA liitumine - näide 2

Oletame, et soovime luua mitmesuguseid Exceli faile, mille üksuse nimi sisaldab ainult selle üksuse müüki.

  • Avage Visual Basic Editor, kasutades kiirklahvi Alt + F11.
  • Kontekstimenüü avamiseks paremklõpsake lehel 'Sheet1' (näide 2) ja klõpsake nupul 'Insert', et lisada VBA 'moodul' VBA projekti.
  • Määrake alamprogramm nimega 'CreateItemSoldFiles'.

Kood:

Sub CreateItemSoldFiles () Lõpeta alam
  • Peame määrama käsu Tööriistad -> Viited … viite objektikogule 'Microsoft Scripting Runtime', kuna kasutame mõnda koodi (objekte), mis ei tööta, kui me seda objektide teeki ei kaasata.
  • Nüüd deklareerime kõik muutujad.

Kood:

Hämarda FSO uue skriptina. FileSystemObject

Ülaltoodud FSO muutuja annab juurdepääsu VBA FileSystemObjectile. Pärast sidumist saame kasutada selliseid funktsioone nagu BuildPath, CopyFile, CreateTextFile jne.

  • Järgmine lause loob objekti TextStream. Objekti TextStream kaudu saame lugeda algsest failist või sellele lisada.

Kood:

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

Nüüd koodi täitmiseks vajutame seejärel klahvi F5, näeme, et töölauale VBA koodi abil on loodud kaust nimega 'Items_Sold'.

Kaustas on 7 unikaalset faili, mis on loodud üksuse nimedega ja saame teada üksikasju ainult selle konkreetse üksuse kohta failides.

Sülearvuti.xls

Mida meeles pidada VBA JOIN funktsiooni kohta

  • SourceArray peab olema ühemõõtmeline massiiv. Me ei saa viidata üksikule lahtrile, kuna see loob mitu mitmemõõtmelist massiivi.
  • Kui määrame eraldajana nullpikkuse stringi (“”), siis liidetakse kõik massiivi üksused eraldajateta.

Huvitavad Artiklid...