VBA prisijungti - Žingsnis po žingsnio „Excel VBA“ prisijungimo funkcijos pavyzdžiai

Panašiai kaip tai, ką turime darbalapyje kaip „Suderinti“ funkciją ir komandą &, kuri naudojama sujungiant dvi ar daugiau nei dvi eilutes kartu, VBA mes naudojame komandą „Join“, kad tai padarytume. Prisijungę VBA mes imame duomenų šaltinį iš masyvo ir panašiai kaip sujungimas, mes naudojame juos atskirti.

„Excel VBA JOIN“ funkcija

Kaip rodo pats pavadinimas, VBA JOIN funkcija naudojama subpozicijų masyvo sujungimui su nurodytu skirikliu. Jei nenurodome jokio skiriamojo elemento, tada jis naudoja „tarpą“ kaip numatytąjį skiriamąjį simbolį. Tai atlieka tą patį darbą, kaip ir „Concatenate“ funkcija „Excel“, išskyrus tai, kad skiriamąjį simbolį turime nurodyti tik vieną kartą, o funkcijoje „Concatenate“ - kiekvieną kartą tarp dviejų eilučių turime nurodyti skiriamąjį simbolį.

Funkcijos sintaksė yra

Kaip matome, funkcija užima du argumentus ir pateikia eilutę. Argumentai yra:

  1. SourceArray : Turime nurodyti arba pateikti nuorodą į substrings masyvą, kuris bus sujungtas.
  2. Skiriklis : skiriamasis elementas naudojamas atskirti kiekvieną poskyrį kuriant gautą eilutę. Kadangi tai yra neprivalomas argumentas, jei jo nepaisysime, skiriamasis elementas yra tarpas ““.

VBA SPLIT funkcija yra visiškai priešinga funkcijos VBA JOIN funkcijai.

VBA prisijungimo funkcijos pavyzdžiai

Žemiau pateikiami „Excel VBA“ prisijungimo funkcijos pavyzdžiai.

VBA prisijungimas - 1 pavyzdys

Tarkime, mes norime prisijungti prie vardo (Ramesh), vidurio (Kumar) ir pavardės (Mishra).

Žingsniai būtų:

  • Pirmiausia turime atidaryti vizualinį pagrindinį redaktorių. Tą patį galime padaryti spustelėję komandą „Visual Basic“ grupėje „Kodas“, esančioje skirtuke „Kūrėjas“, arba galime naudoti „Excel“ spartųjį klavišą Alt + F11 .
  • Įdėkite modulį dešiniuoju pelės klavišu spustelėdami „1 lapą“ ir kontekstiniame meniu pasirinkdami komandą „Įterpti“, tada pasirinkite „Modulis“, kurį norite įterpti.
  • Sukurkite paprogramę pavadinimu „JoiningName“.

Kodas:

Sub JoiningName () Pabaiga Sub
  • JUNGTI naudokite taip

Kodas:

Sub JoiningName () diapazonas ("D2"). Reikšmė = Join (masyvas ("Ramesh", "Kumar", "Mishra")) Pabaiga Sub

Mes galime pamatyti, kad mes naudojome ARRAY funkciją, norėdami suteikti SourceArray funkcijai JOIN, ir praleidome nurodydami skiriamąjį simbolį, taigi „tarpas“ būtų numatytasis simbolis. Apdorota funkcijos JOIN vertė bus įrašyta D2 langelyje, kai šį kodą vykdysime naudodami F5 klavišą arba rankiniu būdu.

VBA prisijungimas - 2 pavyzdys

Tarkime, mes norime sukurti įvairius „Excel“ failus su prekės pavadinimu, kuriame yra tik tos prekės pardavimai.

  • Atidarykite „Visual Basic“ redaktorių naudodami spartųjį klavišą „Alt + F11“.
  • Dešiniuoju pelės mygtuku spustelėkite „Sheet1 ′ (2 pavyzdys)“ lapą, kad atidarytumėte kontekstinį meniu, ir spustelėkite „Insert“, jei norite įterpti VBA „modulį“ į VBA projektą.
  • Apibrėžkite paprogramę pavadinimu „CreateItemSoldFiles“.

Kodas:

Sub CreateItemSoldFiles () Pabaiga Sub
  • Turime nustatyti nuorodą į „Microsoft Scripting Runtime“ objektų biblioteką naudodami komandą Įrankiai -> Nuorodos …, nes naudosime tam tikrą kodą (objektus), kurie neveiks, jei neįtrauksime šios objektų bibliotekos.
  • Dabar mes deklaruosime visus kintamuosius.

Kodas:

Tamsinti FSO kaip naują scenarijų. FileSystemObject

Aukščiau pateiktas FSO kintamasis suteikia prieigą prie VBA FileSystemObject. Susieję galime naudoti tokias funkcijas kaip „BuildPath“, „CopyFile“, „CreateTextFile“ ir kt.

  • Kitas sakinys sukuria „TextStream“ objektą. Per „TextStream“ objektą galime skaityti iš pirminio failo arba jį pridėti.

Kodas:

„Dim FSO“ kaip naujas scenarijus. „FileSystemObject“ „Dim ts“ kaip scenarijus. „TextStream“
  • Deklaruosime daugiau kintamųjų. „r“ skirtas diapazono eilutėms laikyti, „fs“ - galutinei sujungtai eilutei laikyti, „cols“ - diapazono stulpelių skaičiui, „FolPath“ - aplanko kelio saugojimui, kad galėtume išsaugoti failus aplanke ir „Items_Sold“, skirtą saugoti įvairius elementų pavadinimus, kad būtų sukurtas failas su šiais pavadinimais.

Kodas:

Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold as String
  • Norėdami suskaičiuoti bendrą diapazono stulpelių skaičių, apibrėžsime šį teiginį.

Kodas:

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

Šis teiginys pirmiausia parinks dabartinį langelio A1 regioną ir paskaičiuos bendrą dabartinio regiono stulpelių skaičių.

  • 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

Dabar, norėdami įvykdyti kodą, paspausime F5, tada matome, kad VBA kodo pagalba darbalaukyje buvo sukurtas aplankas „Items_Sold“.

Aplanke yra 7 unikalūs failai, sukurti su elemento pavadinimais ir mes galime sužinoti išsamią informaciją tik apie tą konkretų failų elementą.

Nešiojamas kompiuteris.xls

Dalykai, kuriuos reikia atsiminti apie VBA JOIN funkciją

  • SourceArray“ turi būti vienmatis masyvas. Negalime nurodyti atskiros ląstelės, nes taip bus sukurtos kelios daugialypės masyvai.
  • Jei kaip skiriklį nurodysime nulio ilgio eilutę („“), visi masyvo elementai sujungiami be atribotojų.

Įdomios straipsniai...