Hoe String en Variabele samenvoegen in Excel VBA (Een gedetailleerde analyse)

  • Deel Dit
Hugh West

Tijdens het werken met VBA In Excel moeten we vaak tekenreeks (s) en variabele (s) samenvoegen in een werkblad. Het samenvoegen van tekenreeks (s) en variabele (s) wordt veel gebruikt in bijna alle sectoren in ons werk, van het samenvatten van de resultaten van studenten tot het analyseren van een complex bedrijf. In dit artikel laat ik u zien hoe u tekenreeks (s) en variabele (s) kunt samenvoegen in een werkblad met VBA in Excel. Ik zal de dingen uitleggen met goede voorbeelden en illustraties.

String (s) en Variabele (s) samenvoegen in Excel VBA (Snelle weergave)

Download Praktijk Werkboek

Download dit oefenwerkboek om te oefenen terwijl u dit artikel leest.

String en variabele samenvoegen.xlsm

String (s) en Variabele (s) samenvoegen in Excel VBA (Stap voor Stap Analyse)

Laten we eerst eens kijken hoe we string (s) en variabele (s) kunnen samenvoegen in VBA stap voor stap.

⧪ Aaneenschakelende String (s):

Om twee of meer strings in VBA kun je zowel de rekenkundige toevoeging (+) symbool en de ampersand (& ) symbool.

Om bijvoorbeeld de strings "Great Expectations" en "A Tale of Two Cities" met een komma kan je gebruiken:

 New_String = "Great Expectations" + ", " + "A Tale of Two Cities" 

Of,

 New_String = "Great Expectations" & ", " & "A Tale of Two Cities" 

Voer een van de bovenstaande codes uit. Het toont de samengevoegde uitvoer, Great Expectations, A Tale of Two Cities... .

⧪ Aaneenschakelende variabele (s)

Als alle variabelen stringwaarden bevatten, dan kunt u zowel de rekenkundige toevoeging (+) symbool en de ampersand (&) symbool.

Maar als ze dat niet doen, kunt u alleen de ampersand (&) symbool aan elkaar te rijgen.

Laten we bijvoorbeeld twee variabelen hebben, A en B .

A bevat een string, "A Tale of Two Cities" en B een andere string bevat, "De veertig regels van de liefde" .

U kunt zowel de toevoeging (+) symbool en ampersand (&) symbool om ze aan elkaar te rijgen.

 A = "A Tale of Two Cities" B = "The Forty Rules of Love" New_String = A + ", " + B 

Of,

 A = "A Tale of Two Cities" B = "The Forty Rules of Love" New_String = A & ", " & B 

In beide gevallen geven ze de samengevoegde string terug.

Maar als A is een string ( "A Tale of Two Cities" ) en B is een geheel getal ( 27 ), moet u de ampersand (&) symbool aan elkaar te rijgen.

 A = "A Tale of Two Cities" B = 27 New_String = A & ", " & B 

Het geeft de samengevoegde uitvoer terug.

Voorbeelden van aaneenschakelen van strings en variabelen in Excel VBA (met macro, UDF en UserForm)

We hebben geleerd string (s) en variabele (s) samen te voegen met VBA in Excel. Deze keer verkennen we enkele voorbeelden waarbij string (s) en variabele (s) aan elkaar worden gekoppeld met VBA .

Voorbeeld 1: Ontwikkeling van een Macro om string (s) en variabele (s) aan elkaar te koppelen in Excel VBA

We hebben geleerd strings en variabelen samen te voegen met VBA Deze keer ontwikkelen we een Macro om strings en variabelen van meerdere kolommen in een werkblad aan elkaar te rijgen.

Hier hebben we een dataset met boeknamen , auteurs en prijzen van enkele boeken van een boekhandel genaamd Martin Bookstore.

Laten we een Macro om kolommen samen te voegen 1, 2, en 3 van de gegevensverzameling B4:D14 in de cel F4 .

De VBA code zal zijn:

⧭ VBA-code:

 Sub Concatenate_String_and_Variable() Dim Rng As Range Set Rng = Range("B4:D14") Dim Column_Numbers() As Variant Column_Numbers = Array(1, 2, 3) Separator = "," Output_Cell = "F4" For i = 1 To Rng.Rows.Count Output = "" For j = LBound(Column_Numbers) To UBound(Column_Number If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)))& Separator Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j)) End If Next j Range(Output_Cell).Cells(i, 1) = Output Next i End Sub 

⧭ Uitgang:

Voer deze code uit. Je krijgt de 3 aaneengeschakelde kolommen in het bereik F4:F14.

Lees meer: Macro om meerdere kolommen samen te voegen in Excel (met UDF en UserForm)

Voorbeeld 2: Een door de gebruiker gedefinieerde functie maken om string (s) en variabele (s) aan elkaar te koppelen in Excel VBA

We hebben geleerd een Macro om meerdere kolommen van een gegevensverzameling aan elkaar te rijgen. Deze keer maken we een Door de gebruiker gedefinieerde functie om strings of variabelen in Excel aan elkaar te rijgen.

De volledige VBA code zal zijn:

⧭ VBA-code:

 Functie ConcatenateValues(Value1, Value2, Separator) If VarType(Value1) 8204 And VarType(Value2) 8204 Then ConcatenateValues = Value1 & Separator & Value2 ElseIf VarType(Value1) = 8204 And VarType(Value2) 8204 Then Dim Output1() As Variant ReDim Output1(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output1(i - 1, 0) = Value1.Cells(i, 1) &Separator & Value2 Next i ConcatenateValues = Output1 ElseIf VarType(Value1) = 8204 And VarType(Value2) = 8204 Then Dim Output2() As Variant ReDim Output2(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output2(i - 1, 0) = Value1.Cells(i, 1) & Separator & Value2.Cells(i, 1) Next i ConcatenateValues = Output2 End If End Function 

⧭ Uitgang:

Selecteer de kolom waarin u het bereik wilt samenvoegen en voer deze formule in:

=ConcatenateValues("She","H. Rider Haggard",", ")

Het komt terug Zij, H. Rider Haggard als uitgang.

Voer opnieuw de formule in:

=ConcatenateValues(B4:B14,30,", ")

[ Matrixformule Dus vergeet niet om op CTRL + SHIFT + ENTER tenzij je in Office 365 .]

Het zal 30 samenvoegen met alle waarden van het bereik B4:B14 .

Eindelijk, voer in:

=ConcatenateValues(B4:B14,C4:C14,", ")

[Nogmaals Matrixformule Dus vergeet niet om op CTRL + SHIFT + ENTER tenzij je in Office 365 .]

Het zal alle waarden van het bereik aan elkaar rijgen B4:B14 met die van C4:C14 .

Lees meer: Aaneenschakelen in Excel (3 geschikte manieren)

Vergelijkbare lezingen:

  • Hoe tekst uit twee of meer cellen combineren in één cel in Excel (5 methoden)
  • Rijen combineren in één cel in Excel
  • Cijfers samenvoegen in Excel (4 snelle formules)
  • Tekst combineren in Excel (8 geschikte manieren)
  • Hoe apostrofs aan elkaar te koppelen in Excel (6 eenvoudige manieren)

Voorbeeld 3: Een UserForm ontwikkelen om string(s) en variabele(n) in een ander werkblad aan elkaar te koppelen in Excel VBA

We hebben geleerd een Macro en een Door de gebruiker gedefinieerde functie om strings en waarden aan elkaar te rijgen. Tenslotte ontwikkelen we een UserForm om strings en waarden samen te voegen tot de gewenste locatie van het gewenste werkblad.

⧪ Stap 1: De UserForm invoegen

Ga naar de Invoegen> UserForm optie in de VBA werkbalk om een nieuwe UserForm .

⧪ Stap 2: Tools naar het UserForm slepen

A UserForm genaamd UserForm1 zal worden geopend, samen met een Gereedschapskist genaamd Controle .

Beweeg de muis over de e Toolbox en sleep 2 ListBoxes, 5 TextBoxes, 7 Labels en 1 CommanButtons in het UserForm. .

De displays van de Labels zoals aangegeven in de figuur.

Op dezelfde manier kunt u de weergave van de CommandButton naar OK .

⧪ Stap 3: Code schrijven voor Tekstvak1

Dubbelklik op TextBox1 . A Private Subprocedure genaamd TextBox1_Change zal openen. Voer daar de volgende code in.

 Private Sub TextBox1_Change() On Error GoTo Task Range(UserForm1.TextBox1.Text).Select UserForm1.ListBox1.Clear For i = 1 To Range(UserForm1.TextBox1.Text).Columns.Count UserForm1.ListBox1.AddItem Range(UserForm1.TextBox1.Text).Cells(1, i) Next i Exit Sub Task: x = 5 End Sub 

⧪ Stap 4: Code schrijven voor Tekstvak3

Dubbelklik ook op TextBox3 . een andere Private Subprocedure genaamd TextBox3_Change zal openen. Voer daar de volgende code in.

 Private Sub TextBox3_Change() On Error GoTo Task Starting_Cell = UserForm1.TextBox3.Text For i = 1 To Len(Starting_Cell) If Asc(Mid(Starting_Cell, i, 1))>= 48 And Asc(Mid(Starting_Cell, i, 1)) <= 57 Then Col = Left(Starting_Cell, i - 1) Row = Right(Starting_Cell, Len(Starting_Cell) - i + 1) End_Range = Col + Right(Str(Int(Row) + 1)Range(UserForm1.TextBox1.Text).Rows.Count - 1), Len(Str(Int(Row) + 10)) - 1) Set Rng = Range(Starting_Cell + ":" + End_Range) Rng.Select Exit For End If Next i Rng.Cells(1, 1) = UserForm1.TextBox4.Text Exit Sub Task: x = 5 End Sub 

⧪ Stap 5: Code schrijven voor Tekstvak4

Dubbelklik ook op TextBox3 . een andere Private Subprocedure genaamd TextBox3_Change zal openen. Voer daar de volgende code in.

 Private Sub TextBox4_Change() Als UserForm1.TextBox3.Text "" Dan Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ Stap 6: Code schrijven voor ListBox2

Dubbelklik dan op ListBox2 Wanneer de Private Subprocedure genaamd ListBox2_Click opent, voer daar deze code in.

 Private Sub ListBox2_Click() Reserved_Address = Selection.Address For i = 0 To UserForm1.ListBox2.ListCount - 1 If UserForm1.ListBox2.Selected(i) = True Then Worksheets(UserForm1.ListBox2.List(i)).Activate Range(Reserved_Address).Select Exit For End If Next i If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ Stap 7: Code schrijven voor CommanButton1

Dubbelklik ook op Commandoknop1 Na de Private Subprocedure genaamd Commandoknop1_Change opent, en voeg daar de volgende code in.

 Private Sub CommandButton1_Click() On Error GoTo Message Dim Rng As Range Set Rng = Worksheets(UserForm1.TextBox5.Text).Range(UserForm1.TextBox1.Text) Dim Column_Numbers() As Variant Count = 0 For i = 0 To UserForm1.ListBox1.ListCount - 1 If UserForm1.ListBox1.Selected(i) = True Then ReDim Preserve Column_Numbers(Count) Column_Numbers(Count) = i + 1 Count = Count + 1End If Next i Scheider = UserForm1.TextBox2.Text Output_Cell = UserForm1.TextBox3.Text For i = 0 To UserForm1.ListBox2.ListCount-1 If UserForm1.ListBox2.Selected(i) = True Then Sheet_Name = UserForm1.ListBox2.List(i) Exit For End If Next i Worksheets(Sheet_Name).Range(Output_Cell).Cells(1, 1) = UserForm1.TextBox4.Text For i = 2 To Rng.Rows.Count Output = "" For j= LBound(Column_Numbers) To UBound(Column_Numbers) If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)) & Separator Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j)) End If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message:MsgBox "Kies alle opties juist.", vbExclamation End Sub 

⧪ Stap 7: Code schrijven voor de UserForm

Nu is de laatste stap. Voeg een nieuwe Module van de VBA en voeg de volgende code in.

 Sub Run_UserForm() UserForm1.Caption = "Waarden samenvoegen" UserForm1.TextBox1.Text = Selection.Address UserForm1.TextBox5.Text = ActiveSheet.Name UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox1.Clear For i = 1 To Selection.Columns.Count UserForm1.ListBox1.AddItemSelection.Cells(1, i) Next i UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle For i = 1 To Sheets.Count UserForm1.ListBox2.AddItem Sheets(i).Name Next i Load UserForm1 UserForm1.Show End Sub 

⧪ Stap 8: De UserForm uitvoeren

Uw UserForm is nu klaar voor gebruik. Om het uit te voeren, selecteert u de gegevensset van het werkblad (inclusief de Koppen ) en voer de Macro genaamd Run_UserForm .

De UserForm wordt geladen met alle opties. Het geselecteerde bereikadres wordt getoond op TextBox1 ( B3:D4 Het geselecteerde bereik in het werkblad zal veranderen.

Selecteer de kolommen die u wilt samenvoegen uit de Kolommen om samen te voegen ListBox. Hier heb ik geselecteerd Naam van het boek en Prijs .

Voer de Scheider Hier heb ik een komma ( , ).

Selecteer de werkbladnaam waar u het aaneengeschakelde bereik in het Samengevoegd in listbox. Hier heb ik ingevoerd Blad3 .

(Zodra u het blad selecteert, wordt het geactiveerd, ook al is het niet het actieve blad).

Plaats dan de Uitvoerlocatie Het is de celverwijzing van de eerste cel van het samengevoegde bereik. Hier heb ik gezet B3 .

(Het moment dat u de Uitvoerlocatie wordt het uitgangsbereik geselecteerd).

En ten slotte moet u de naam van de Output Header (Kop van het uitvoerbereik). Hier heb ik gezet Samengevoegd bereik .

(Het moment dat je de Uitvoerkop wordt de kop van de uitvoerkolom ingesteld).

Klik op OK krijg je de gewenste uitvoer op de gewenste plaats.

Lees meer: String en integer samenvoegen met VBA

Conclusie

Dit zijn dus een paar voorbeelden waarin u Excel kunt gebruiken VBA om strings en variabelen aan elkaar te rijgen. Ik hoop dat de voorbeelden alles duidelijk hebben gemaakt. Heb je nog vragen? Stel ze ons gerust. En vergeet niet onze site te bezoeken ExcelWIKI voor meer berichten en updates.

Hugh West is een zeer ervaren Excel-trainer en -analist met meer dan 10 jaar ervaring in de branche. Hij heeft een bachelor in Accounting en Finance en een master in Business Administration. Hugh heeft een passie voor lesgeven en heeft een unieke lesaanpak ontwikkeld die gemakkelijk te volgen en te begrijpen is. Zijn deskundige kennis van Excel heeft duizenden studenten en professionals over de hele wereld geholpen hun vaardigheden te verbeteren en uit te blinken in hun carrière. Via zijn blog deelt Hugh zijn kennis met de wereld en biedt hij gratis Excel-tutorials en online trainingen aan om individuen en bedrijven te helpen hun volledige potentieel te bereiken.