VBA Pridružite se - Primeri funkcije združevanja v programu Excel VBA po korakih

Podobno kot imamo na delovnem listu kot funkcija Združevanja in ukaz &, ki se uporablja za združevanje dveh ali več kot dveh nizov, v VBA za to uporabljamo ukaz Pridruži se, pri Pridruži se v VBA vzamemo vir podatkov v matriki in podobno kot združevanje uporabljamo ločilo, da se jim pridružimo.

Funkcija Excel VBA JOIN

Kot že samo ime pove, se funkcija VBA JOIN uporablja za združevanje niza podnizov z določenim ločilnikom. Če ne določimo nobenega ločila, potem za privzeti znak za ločilo potrebuje 'presledek'. Deluje enako kot funkcija Concatenate v Excelu, le da moramo ločilni znak določiti samo enkrat, medtem ko moramo pri funkciji Concatenate vsakič med dvema nizoma določiti ločilni znak.

Sintaksa funkcije je

Kot lahko vidimo, funkcija vzame dva argumenta in vrne niz. Argumenti so:

  1. SourceArray : Navesti moramo ali se sklicevati na niz podnizov, ki jih je treba združiti.
  2. Ločilo : je ločilo uporablja za ločevanje vsakega od podnizov pri ustvarjanju do nastalega niza. Ker je to neobvezen argument, je ločilo nastavljeno na presledek "".

Funkcija VBA SPLIT je popolnoma nasprotna funkcija funkcije VBA JOIN.

Primeri funkcije združevanja VBA

Spodaj so primeri funkcije združevanja v Excelu VBA.

Pridružitev VBA - primer št. 1

Recimo, da se želimo pridružiti prvemu (Ramesh), srednjemu (Kumar) in priimku (Mishra).

Koraki bi bili:

  • Najprej moramo odpreti urejevalnik visual basic. Enako lahko storimo s klikom na ukaz 'Visual Basic' v skupini 'Koda' na zavihku 'Razvijalec' excel ali pa lahko uporabimo bližnjično tipko excel Alt + F11 .
  • Modul vstavite tako, da z desno miškino tipko kliknete "list 1" in v kontekstnem meniju izberete ukaz "Vstavi" in nato vstavite "Modul".
  • Ustvarite podprogram z imenom "JoiningName".

Koda:

Sub JoiningName () Konec Sub
  • Uporabite funkcijo JOIN na naslednji način

Koda:

Sub JoiningName () Obseg ("D2"). Value = Pridružite se (Array ("Ramesh", "Kumar", "Mishra")) End Sub

Vidimo, da smo uporabili funkcijo ARRAY za zagotavljanje SourceArray funkcije JOIN in preskočili, da določimo ločilni znak, tako da bi bil 'presledek' privzeti znak. Obdelana vrednost funkcije JOIN bo zapisana v celico D2, ko bomo to kodo izvedli s tipko F5 ali ročno.

Pridružitev VBA - primer # 2

Recimo, da želimo ustvariti različne datoteke excel z imenom artikla, ki vsebuje prodajo samo za ta izdelek.

  • Odprite urejevalnik Visual Basic s bližnjico Alt + F11.
  • Z desno miškino tipko kliknite list »Sheet1« (primer 2), da odprete kontekstni meni, in kliknite »Vstavi«, da v projekt VBA vstavite modul VBA.
  • Določite podprogram z imenom "CreateItemSoldFiles".

Koda:

Sub CreateItemSoldFiles () Konec Sub
  • Sklic na knjižnico predmetov 'Microsoft Scripting Runtime' moramo nastaviti z uporabo menija Tools -> References …, saj bomo uporabili nekaj kode (predmetov), ​​ki ne bo delovala, če te knjižnice predmetov ne bomo vključili.
  • Zdaj bomo razglasili vse spremenljivke.

Koda:

Zatemni FSO kot nov skript.FileSystemObject

Zgornja spremenljivka FSO omogoča dostop do datoteke VBA FileSystemObject. Po vezavi lahko uporabimo funkcije, kot so BuildPath, CopyFile, CreateTextFile itd.

  • Naslednji stavek ustvari objekt TextStream. Skozi objekt TextStream lahko beremo izvirno datoteko ali jo dodamo.

Koda:

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

Zdaj za izvedbo kode pritisnemo F5, nato lahko vidimo, da je bila mapa z imenom "Items_Sold" ustvarjena s pomočjo kode VBA na namizju.

V mapi je 7 edinstvenih datotek, ustvarjenih z imeni predmeta, v datotekah pa lahko ugotovimo podrobnosti samo o tem določenem elementu.

Prenosnik.xls

Stvari, ki jih je treba zapomniti o funkciji VBA JOIN

  • SourceArray mora biti eno-dimenzionalni array. Ne moremo se sklicevati na posamezno celico, saj bomo s tem ustvarili več večdimenzionalnih nizov.
  • Če kot ločilo določimo niz ničelne dolžine (“”), se vsi elementi v matriki združijo brez ločil.

Zanimive Članki...