VBA Liity | Vaiheittaiset esimerkit Excel VBA Join -toiminnosta

Samanlainen kuin mitä laskentataulukossa on Liitäntäfunktio ja & -komento, jota käytetään kahden tai useamman kuin kahden merkkijonon yhdistämiseen, VBA: ssa käytämme Liity-komentoa siihen, Liity VBA: ssa otamme taulukon tietojen lähteen ja samanlainen kuin ketjutus, käytämme erotinta liittymään niihin.

Excel VBA JOIN -toiminto

Kuten nimestä itsestään käy ilmi, VBA JOIN -toimintoa käytetään yhdistämään joukko alimerkkijonoja määritetyn erottimen kanssa. Jos emme määritä mitään erotinta, se vie 'välilyönnin' oletusarvoiseksi erottimeksi. Se tekee saman työn kuin konkatenaattitoiminto Excelissä, paitsi että meidän on määritettävä erotinmerkki vain kerran, kun taas ketjutustoiminnossa on määriteltävä erotinmerkki joka kerta kahden merkkijonon välissä.

Funktion syntaksi on

Kuten näemme, funktio ottaa kaksi argumenttia ja palauttaa merkkijonon. Väitteet ovat:

  1. SourceArray : Meidän on määriteltävä tai annettava viittaus liitettävien alaosien ryhmään.
  2. Erotin : Erotinta käytetään erottamaan kukin alimerkkijono, kun luot luotua merkkijonoa. Koska tämä on valinnainen argumentti, jos jätämme sen pois, erotin asetetaan välilyönniksi "".

VBA SPLIT -toiminto on täsmälleen päinvastainen toiminto VBA JOIN -toiminnolla.

Esimerkkejä VBA Join -toiminnosta

Alla on esimerkkejä liittymistoiminnosta Excel VBA: ssa.

Voit ladata tämän VBA Join Function Excel -mallin täältä - VBA Join Function Excel -malli

VBA Liity - Esimerkki 1

Oletetaan, että haluamme liittyä etu- (Ramesh), keskimmäiseen (Kumar) ja sukunimeen (Mishra).

Vaiheet olisivat:

  • Ensinnäkin meidän on avattava visuaalinen peruseditori. Voimme tehdä saman napsauttamalla Visual Basic -komentoa Koodi-ryhmässä Kehittäjä-välilehden alla tai voimme käyttää Excelin pikanäppäintä Alt + F11 .

  • Lisää moduuli napsauttamalla hiiren kakkospainikkeella “arkki 1” -kuvaketta, valitsemalla asiayhteysvalikosta komento Lisää ja valitsemalla sitten lisättävä moduuli.

  • Luo aliohjelma nimeltä JoiningName.

Koodi:

 Sub JoiningName () Lopeta Sub 

  • Käytä JOIN-toimintoa seuraavasti

Koodi:

 Sub JoiningName () -alue ("D2"). Arvo = Liity (taulukko ("Ramesh", "Kumar", "Mishra")) Loppu Sub 

Voimme nähdä, että olemme käyttäneet ARRAY-funktiota tarjotaksemme SourceArray-toiminnon JOIN-funktiolle ja ohittaneet määritellä erotinmerkin, joten "välilyönti" olisi oletusmerkki. JOIN-funktion käsitelty arvo kirjoitetaan soluun D2, kun suoritamme tämän koodin F5-näppäimellä tai manuaalisesti.

VBA Liity - esimerkki 2

Oletetaan, että haluamme luoda useita Excel-tiedostoja, joiden nimike sisältää myyntiä vain tälle tuotteelle.

  • Avaa Visual Basic Editor pikanäppäimellä Alt + F11.
  • Napsauta hiiren kakkospainikkeella 'Sheet1' (esimerkki 2) -arkkia avataksesi asiayhteysvalikon ja napsauta 'Insert' lisätäksesi VBA-moduulin VBA-projektiin.

  • Määritä aliohjelma nimeltä 'CreateItemSoldFiles'.

Koodi:

 Sub CreateItemSoldFiles () End Sub 

  • Meidän on asetettava viittaus Microsoft Scripting Runtime -objektikirjastoon Työkalut-valikko -> Viitteet ... -komennolla, koska käytämme joitain koodeja (objekteja), jotka eivät toimi, jos emme sisällä tätä objektikirjastoa.

  • Nyt ilmoitamme kaikki muuttujat.

Koodi:

 Hämärtää FSO: ta uudena komentosarjana.FileSystemObject

Yllä oleva FSO-muuttuja antaa pääsyn VBA FileSystemObject -ohjelmaan. Sitomisen jälkeen voimme käyttää toimintoja, kuten BuildPath, CopyFile, CreateTextFile jne.

  • Seuraava lause luo TextStream-objektin. TextStream-objektin kautta voimme lukea tai liittää alkuperäiseen tiedostoon.

Koodi:

 Himmennä FSO kuin uusi komentosarja. FileSystemObject Himmennä kuin komentosarja. TextStream

  • Ilmoitamme lisää muuttujia. 'r' tarkoittaa rivien pitämistä alueella, 'fs' on liitetty viimeinen liitetty merkkijono, 'cols' sarakkeiden lukumäärän säilyttämiseen alueella, 'FolPath' kansion polun tallentamiseen, jotta voimme tallentaa tiedostot kansiossa ja 'Items_Sold' erilaisten nimien tallentamiseksi tiedostojen luomiseksi näillä nimillä.

Koodi:

 Dim r As Range Dim fs as String Dim cols As Integer Dim FolPath as String Dim Items_Sold as String 

  • Laskemme alueen sarakkeiden kokonaismäärän määrittelemällä seuraavan lauseen.

Koodi:

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

Tämä lause valitsee ensin solun A1 nykyisen alueen ja laskee sitten nykyisen alueen sarakkeiden kokonaismäärän.

  • Kirjoitamme seuraavat lauseet määritettäessä muuttujalle 'FolPath' polku käyttämällä VBA ENVIRON -toimintoa ja ketjutusoperaattoria.

Koodi:

FolPath = Ympäristö ("UserProfile") & "\ Desktop \ Items_Sold" Jos ei FSO.FolderExists (FolPath) Sitten FSO.CreateFolder FolPath

Toinen käsky luo kansion, jos kansiota ei ole samassa paikassa.

  • Tämä koodi määrittää B-sarakkeen arvot yksitellen kohtaan 'Items_Sold'. Olemme käyttäneet 'OFFSET-funktiota' saadaksemme B-sarakkeen soluviitteen, koska tällä hetkellä valittu solu on sarakkeessa A.

Koodi:

Tuotteet_Myyty = r.Offset (0, 1) .Arvo

  • Seuraava reunustettu käsky avaa tiedostot, joiden nimet on tallennettu muuttujaan Items_Sold, yksitellen liitetyssä tilassa (uudet arvot liitetään vihdoin).

Koodi:

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

Olemme käyttäneet ketjutusoperaattoria muuttujilla 'FolPath' ja 'Items_Sold' sekä staattisilla arvoilla ("\" ja ".xls") Excel-tiedostojen nimien luomiseen.

  • Meidän on pidettävä mielessä, että VBA JOIN -toiminto käyttää vain yksiulotteista taulukkoa SourceArray-muodossa. Jos haluat muuntaa rivit yksiulotteiseksi taulukoksi, meidän on käytettävä Application.Transpose-menetelmää kaksi kertaa.

Koodi:

fs = Liity (Application.Transpose (Application.Transpose (r.Resize (1, cols) .Arvo)), vbTab)

Olemme koonneet alueen koon muutaman sarakkeen leveydelle käyttämällä objektin Muuta kokoa -menetelmää.

Erottimena olemme käyttäneet 'vbTab' avainsanaa, jotta arvot täytettäisiin eri soluihin.

  • Kun olemme tallentaneet JOIN-funktion käsitellyn arvon fs-muuttujaan, kirjoitamme fs: n arvot uusiin VBA-luotujen Excel-tiedostojen riveihin jokaiselle alkuperäisen tiedostomme riville riviltä 2 viimeiselle riville (meidän tapauksessamme se on 350. krs).

  • Ennen silmukan lopettamista suljetaan avattu tiedosto. Koodi olisi kuvakaappauksen mukainen.

Olemme kirjoittaneet koko koodin nyt.

Koodi:

Sub CreateItemSoldFiles () Himmennä FSO kuin uusi komentosarja.FileSystemObject Dim ts As Scripting.TextStream Dim r As Range Dim fs String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String cols = Range ("A1"). CurrentRegion.Columns. Laske FolPath = Ympäristö ("UserProfile") & "\ Desktop \ Items_Sold" Jos ei FSO.FolderExists (FolPath) Sitten FSO.CreateFolder FolPath jokaiselle alueelle ("A2", Range ("A1"). End (xlDown) ) Items_Sold = r.Offset (0, 1) .Arvo Aseta ts = FSO.OpenTextFile (FolPath & "\" & Items_Sold & ".xls", ForAppending, True) fs = Liity (Application.Transpose (Application.Transpose (r) Muuta kokoa (1, cols) .Arvo)), vbTab) ts .WriteLine fs ts.Sulje Seuraava r End Sub

Nyt koodin suorittamiseksi painamme sitten F5, näemme, että kansio nimeltä Items_Sold on luotu työpöydän VBA-koodin avulla.

Kansiossa on 7 yksilöivää tiedostoa, jotka on luotu kohteen nimillä, ja voimme löytää lisätietoja vain kyseisestä tiedostosta.

Kannettava tietokone. Xls

Muistettavaa VBA JOIN -toiminnosta

  • SourceArray on oltava yksiulotteinen matriisi. Emme voi viitata yksittäiseen soluun, koska se luo useita moniulotteisia taulukoita.
  • Jos määritämme nollapituisen merkkijonon (“”) erottimeksi, kaikki matriisin kohteet ketjutetaan ilman erottimia.

$config[zx-auto] not found$config[zx-overlay] not found