VBA pievienoties - Soli pa solim Excel VBA pievienošanās funkcijas piemēri

Līdzīgi tam, kas mums ir darblapā kā funkcija Sasaistīt, un komandai &, kas tiek izmantota, lai savienotu divas vai vairāk nekā divas virknes kopā, VBA mēs to izmantojam, lai to izdarītu, pievienojoties VBA, mēs ņemam datu avotu masīvā un līdzīgi konkatenācijai, lai pievienotos tiem, izmantojam norobežotāju.

Excel VBA Pievienošanās funkcija

Kā norāda pats nosaukums, funkcija VBA JOIN tiek izmantota, lai savienotu apakšgrupu masīvu ar norādīto atdalītāju. Ja mēs nenorādām nevienu atdalītāju, tad tā kā noklusējuma atdalītāja rakstzīme aizņem “atstarpi”. Tas veic to pašu darbu, ko funkcija “Savienot savienojumu” programmā Excel, izņemot to, ka mums ir jānorāda atdalītāja raksturs tikai vienu reizi, turpretī funkcijai “Savienot savienojumu” mums katru reizi starp divām virknēm ir jānorāda atdalītāja raksturs.

Funkcijas sintakse ir

Kā redzam, funkcija aizņem divus argumentus un atgriež virkni. Argumenti ir:

  1. SourceArray : Mums jāprecizē vai jāsniedz atsauce uz apakšsavienojumu masīvu, kas jāapvieno.
  2. Atdalītājs : Atdalītāju izmanto, lai atdalītu katru apakšvirsrakstu, izveidojot iegūto virkni. Tā kā šis ir neobligāts arguments, ja mēs to izlaižam, norobežotājs tiek iestatīts kā atstarpe.

Funkcija VBA SPLIT ir tieši pretēja funkcijas VBA JOIN funkcijai.

VBA pievienošanās funkcijas piemēri

Tālāk ir norādīti pievienošanās funkcijas piemēri programmā Excel VBA.

VBA pievienošanās - 1. piemērs

Pieņemsim, ka mēs vēlamies pievienoties vārdam (Ramesh), vidējam (Kumar) un uzvārdam (Mishra).

Soļi būtu:

  • Pirmkārt, mums jāatver vizuālais pamata redaktors. Mēs varam darīt to pašu, noklikšķinot uz komandas Visual Basic grupā Code, zem cilnes Developer cilnes Excel, vai arī mēs varam izmantot Excel īsinājumtaustiņu Alt + F11 .
  • Ievietojiet moduli, ar peles labo pogu noklikšķinot uz “1. lapas” un konteksta izvēlnē izvēloties komandu “Ievietot”, pēc tam izvēlieties ievietojamo “Modulis”.
  • Izveidojiet apakšprogrammu ar nosaukumu 'JoiningName'.

Kods:

Sub JoiningName () Beigas Sub
  • Izmantojiet funkciju PIEVIENOTIES šādi

Kods:

Sub JoiningName () diapazons ("D2"). Vērtība = Join (Masīvs ("Ramesh", "Kumar", "Mishra")) Beigas Sub

Mēs varam redzēt, ka esam izmantojuši funkciju ARRAY, lai nodrošinātu SourceArray funkcijai PIEVIENOTIES, un izlaist, lai norādītu atdalītāja rakstzīmi, tāpēc noklusējuma raksturs būtu “atstarpe”. Apstrādātā JOIN funkcijas vērtība tiks ierakstīta šūnā D2, kad mēs izpildīsim šo kodu, izmantojot F5 taustiņu vai manuāli.

VBA pievienošanās - 2. piemērs

Pieņemsim, ka mēs vēlamies izveidot dažādus Excel failus ar vienuma nosaukumu, kas satur tikai šī vienuma pārdošanu.

  • Atveriet Visual Basic redaktoru, izmantojot īsinājumtaustiņu Alt + F11.
  • Ar peles labo pogu noklikšķiniet uz lapas "Sheet1" (2. piemērs), lai atvērtu konteksta izvēlni, un noklikšķiniet uz "Insert", lai VBA projektā ievietotu VBA "moduli".
  • Definējiet apakšprogrammu ar nosaukumu 'CreateItemSoldFiles'.

Kods:

Sub CreateItemSoldFiles () Beigas Sub
  • Mums ir jāiestata atsauce uz “Microsoft Scripting Runtime” objektu bibliotēku, izmantojot komandu Rīki -> Atsauces …, jo mēs izmantosim dažus kodus (objektus), kas nedarbosies, ja neiekļausim šo objektu bibliotēku.
  • Tagad mēs deklarēsim visus mainīgos.

Kods:

Aptumšot FSO kā jaunu skriptu. FileSystemObject

Iepriekš minētais FSO mainīgais dod piekļuvi VBA FileSystemObject. Pēc saistīšanas mēs varam izmantot tādas funkcijas kā BuildPath, CopyFile, CreateTextFile utt.

  • Nākamais paziņojums izveido objektu TextStream. Izmantojot objektu TextStream, mēs varam lasīt no sākotnējā faila vai pievienot tam.

Kods:

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

Tagad, lai izpildītu kodu, mēs nospiedīsim F5, tad redzēsim, ka ar VBA koda palīdzību uz darbvirsmas ir izveidota mape ar nosaukumu 'Items_Sold'.

Mapē ir izveidoti 7 unikāli faili ar vienuma nosaukumiem, un mēs varam uzzināt informāciju par failiem tikai par šo konkrēto vienumu.

Klēpjdators.xls

Lietas, kas jāatceras par funkciju VBA JOIN

  • SourceArray jābūt viendimensijas masīvs. Mēs nevaram atsaukties uz atsevišķu šūnu, jo tādējādi tiks izveidoti vairāki daudzdimensiju bloki.
  • Ja kā atdalītāju norādām nulles garuma virkni (“”), visi masīva vienumi tiek apvienoti bez atdalītājiem.

Interesanti raksti...