Excel VBA Join-functie

De VBA JOIN-functie wordt gebruikt om een ​​reeks substrings samen te voegen met het opgegeven scheidingsteken. Net zoals het woord zelf betekent dat het twee of meer tekenreeksen moet samenvoegen. Nu zijn hier een paar vangsten mee. De tekenreeksen staan ​​in een array en het gebruikt ook een scheidingsteken als de aaneengeschakelde functie. Maar het scheidingsteken voor de aaneengeschakelde functie kan verschillen tussen twee strings omdat we een scheidingsteken moeten opgeven tussen elke twee strings met de aaneengeschakelde functie. Maar in Join in VBA hoeven we slechts één keer een scheidingsteken op te geven. Dat scheidingsteken wordt gebruikt voor elke string om toe te treden. Maar deze parameter is ook optioneel. Dus wat gebeurt er als we geen afbakening van de functie geven? Als we geen scheidingsteken voor de functie opgeven, wordt standaard 'spatie' als scheidingsteken gebruikt.

Syntaxis van de join-functie in Excel VBA

De join-functie heeft de volgende syntaxis in Excel VBA:

Laten we nu de argumenten voor de VBA Join-functie begrijpen,

  • Source Array: het is een array of set van strings die we willen samenvoegen.
  • Scheidingsteken: dit is het scheidingsteken of het teken dat we gebruiken om onderscheid te maken tussen de ene reeks en de andere. Een scheidingsteken kan een spatie of een komma of een punt of een willekeurig teken van onze computer zijn.

De uitvoer die door deze functie wordt geretourneerd, is een tekenreeks.

Hoe Excel VBA Join-functie te gebruiken?

We zullen leren hoe u een VBA Join-functie kunt gebruiken met een paar voorbeelden in Excel.

U kunt deze VBA Join Excel-sjabloon hier downloaden - VBA Join Excel-sjabloon

Excel VBA Join - Voorbeeld # 1

Laten we eerst beginnen met een basisvoorbeeld. We hebben een pad van een bestand opgeslagen in verschillende cellen van ons werkblad in blad 1. We willen een totaalpad naar die locatie in een andere cel. Het pad dat moet worden samengevoegd is als volgt,

We willen het pad in cel E2. Volg de onderstaande stappen om de Join-functie te gebruiken in Excel VBA.

Stap 1: Ga naar het tabblad van de ontwikkelaar en klik vervolgens op Visual Basic om in VB Editor te komen.

Stap 2: Klik op het tabblad invoegen en voeg een module in het VBA-project in.

Stap 3: Laten we nu onze eerste subprocedure als volgt declareren.

Code:

 Sub Voorbeeld () Einde Sub 

Stap 4: Omdat we de gegevens bij ons hebben, kunnen we eenvoudig de waarde van de eigenschap range gebruiken om als volgt aan het pad deel te nemen.

Code:

 Sub Voorbeeld () Bereik ("E2"). Waarde = Einde Sub 

Stap 5: Gebruik de Join-functie om alle tekenreeksen samen met het scheidingsteken samen te voegen als "\".

Code:

 Subvoorbeeld () Bereik ("E2"). Waarde = Join (matrix (bereik ("A2"). Waarde, bereik ("B2"). Waarde, bereik ("C2"). Waarde, bereik ("D2") .Value), "\") Sub beëindigen 

Stap 6: Voer de bovenstaande code uit door op de F5-toets te drukken of door op de knop Run uitvoeren te klikken en we hebben ons resultaat in cel E2 zoals hieronder weergegeven.

We kunnen zien dat alle vier strings zijn samengevoegd met een gemeenschappelijk scheidingsteken dat "\" is.

Excel VBA Join - Voorbeeld # 2

Laten we verder gaan met een praktisch voorbeeld. Ik heb de naam, cijfers en voldoende of niet van de student op één blad. We willen een aparte map met bestanden maken met daarin of de student geslaagd of mislukt is of is gescoord. Hiervoor zullen we enkele van de concepten van FSO (File System Objects) lenen met behulp van de join-functie. Nou, de gegevens zien er als volgt uit zoals hieronder.

Volg de onderstaande stappen om de Join-functie te gebruiken in Excel VBA.

Stap 1: Laten we in dezelfde module als volgt een andere subprocedure starten.

Code:

 Sub Voorbeeld 2 () Einde Sub 

Stap 2: Declareer twee variabelen als FSO en tekststroom. Dit is een methode van FSO als volgt.

Code:

 Dim FSO als nieuwe Scripting.FileSystemObject Dim St als Scripting.TextStream 

Stap 3: Laten we nu wat meer variabelen declareren, een als een bereik om de rijen te houden en een ander als een geheel getal om de kolommen te houden, terwijl een ander als String om de samengevoegde tekenreekswaarde en het mappad op te slaan en een om de bestandsnamen te maken.

Code:

 Dim rw As Range Dim res As String Dim col As Integer Dim FolPath As String Dim Resultaat As String 

Stap 4: Omdat we de gegevens in blad 2 hebben, laten we blad 2 eerst activeren.

Code:

 Werkbladen ( "Blad2"). Activate 

Stap 5: Laten we nu het aantal kolommen dat we in de gegevens hebben als volgt tellen,

Code:

 col = Bereik ("A1"). CurrentRegion.Columns.Count 

Stap 6: Laten we nu als volgt een pad toewijzen aan het Folpath met behulp van de Informatie-functie ENVIRON.

Code:

 FolPath = Environ ("UserProfile") & "\ Desktop \ Resultaat" 

Stap 7: Laten we nu controleren of de map bestaat of niet en laten we deze dan als volgt maken met de FSO-methode.

Code:

 Indien niet FSO.FolderExists (FolPath) Dan FSO.CreateFolder FolPath 

Stap 8: Laten we nu de namen toevoegen die zijn opgeslagen met de offset-functie als volgt.

Code:

 Voor elke rw in bereik ("A2", bereik ("A1"). Einde (xlDown)) Resultaat = rw.Offset (0, 1). Waarde 

Hiermee worden de bestanden met namen tegelijkertijd geopend in de toevoegmodus, waarbij nieuwere waarden als laatste worden toegevoegd. We hebben de bovenstaande code gebruikt zodat de waarde van het resultaat één voor één wordt toegewezen.

Stap 9: Omdat de Join-functie 1-D array gebruikt, gebruiken we de functie application.transpose met de join-functie om deze als volgt om te zetten in een 1-D array.

Code:

 St = FSO.OpenTextFile (FolPath & "\" & Result & ".xls", ForAppending, True) instellen res = Join (Application.Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab ) St.WriteLine res 

Waarom hebben we application.transpose gebruikt? Omdat in het algemeen array (1-D) bereik horizontaal moet zijn, wat betekent dat een rij veel kolommen heeft. Aangezien we hier een verticaal bereik hebben in kolom B, wat het resultaat is, hebben we deze transponeerfunctie gebruikt om het om te zetten in een 1-D array. We hebben VbTab gebruikt als scheidingsteken zodat de waarden in de volgende cellen staan.

Stap 10: Voordat we de for-lus beëindigen, laten we het bestand sluiten en vervolgens de for-lus als volgt beëindigen.

De algemene code ziet eruit als die hieronder.

Code:

 Subvoorbeeld 2 () Dim FSO als nieuwe Scripting.FileSystemObject Dim St als Scripting.TextStream Dim rw As Range Dim res As String Dim col As Integer Dim FolPath As String Dim Resultaat As String Worksheets ("Sheet2"). Activeer col = Range (" A1 "). CurrentRegion.Columns.Count FolPath = Environ (" UserProfile ") &" \ Desktop \ Result "Zo niet FSO.FolderExists (FolPath) Dan FSO.CreateFolder FolPath voor elke rw binnen bereik (" A2 ", bereik (" A1 "). Einde (xlDown)) Resultaat = rw.Offset (0, 1). Waarde Set St = FSO.OpenTextFile (FolPath &" \ "& Resultaat &" .xls ", ForAppending, True) res = Join (Toepassing .Transpose (Application.Transpose (rw.Resize (1, col) .Waarde)), vbTab) St.WriteLine res St.Close Volgende rw End Sub 

Stap 11: Laten we nu de bovenstaande code uitvoeren door op de F5-toets te drukken, we kunnen op ons bureaublad zien dat een map is gemaakt met de naam Resultaat zoals hieronder weergegeven.

Stap 12: Open de map met drie bestanden als Pass, Fail en Grace.

Als we een van de bestanden openen, laten we zeggen dat we Fail-bestand openen, kunnen we de gegevens zien voor de studenten die zijn mislukt.

Dingen om te onthouden

  • Het wordt gebruikt om een ​​stringreeks met een gemeenschappelijk scheidingsteken samen te voegen.
  • De uitvoer die door deze functie wordt geretourneerd, is String.
  • Het is tegengesteld aan de Split-functie in VBA.
  • Als we geen scheidingsteken voor deze functie opgeven, wordt standaard "spatie" als scheidingsteken gebruikt.
  • De array in het argument moet een eendimensionale array zijn. Zo niet, dan kunnen we de conventionele applicatiemethoden gebruiken. Transponeren zoals uitgelegd in voorbeeld 2.

Aanbevolen artikelen

Dit is een handleiding voor de VBA Join-functie. Hier bespreken we hoe de Join-functie in Excel te gebruiken met behulp van VBA-code, samen met praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -

  1. Excel-datumfunctie
  2. Tekenreeksen samenvoegen in Excel
  3. Toepassingen van VBA Union
  4. Excel aaneengesloten kolommen

Categorie: