Sådan Concatenate String og Variable i Excel VBA (en detaljeret analyse)

  • Del Dette
Hugh West

Under arbejdet med VBA i Excel skal vi ofte sammenkæde streng (s) og variabel (s) i et regneark. Sammenkædning af streng (s) og variabel (s) er meget udbredt i næsten alle sektorer i vores arbejde, lige fra at opsummere resultaterne af studerende til at analysere en kompleks virksomhed. I denne artikel vil jeg vise dig, hvordan du kan sammenkæde streng (s) og variabel (s) i et regneark med VBA i Excel. Jeg vil forklare tingene med gode eksempler og illustrationer.

Sammenkædning af streng(e) og variabel(e) i Excel VBA (hurtig visning)

Download arbejdsbog til øvelser

Download denne arbejdsbog til træning, så du kan øve dig, mens du læser denne artikel.

Sammenkædning af streng og variabel.xlsm

Sammenkædning af streng(e) og variabel(e) i Excel VBA (trinvis analyse)

Lad os først og fremmest se, hvordan vi kan sammenkæde streng (s) og variabel (s) i VBA trin for trin.

⧪ Sammenkædning af streng(e):

For at sammenkæde to eller flere strenge i VBA , kan du bruge både den aritmetiske tilføjelse (+) symbolet og ampersand (& ) symbol.

For eksempel for at sammenkæde strengene "Store forventninger" og "En fortælling om to byer" med en komma , kan du bruge:

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

Eller,

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

Kør en af ovenstående koder, så vises det sammenkædede output, Store forventninger, En fortælling om to byer .

⧪ Sammenkædning af variabel (s)

Hvis alle variablerne indeholder strengværdier, kan du bruge både den aritmetiske tilføjelse (+) symbolet og ampersand (&) symbol.

Men hvis de ikke gør det, kan du kun bruge ampersand (&) symbol til sammenkædning.

Lad os f.eks. have to variabler, A og B .

A indeholder en streng, "En fortælling om to byer" , og B indeholder en anden streng, "De fyrre regler for kærlighed" .

Du kan bruge både tilføjelse (+) symbol og ampersand (&) symbolet for at sammenkæde dem.

 A = "En fortælling om to byer" B = "De fyrre kærlighedsregler" New_String = A + ", " + B 

Eller,

 A = "En fortælling om to byer" B = "De fyrre kærlighedsregler" New_String = A & ", ", " & B 

I begge tilfælde returnerer de den sammenkædede streng.

Men hvis A er en streng ( " En fortælling om to byer" ) og B er et heltal ( 27 ), skal du bruge ampersand (&) symbol til sammenkædning.

 A = "En fortælling om to byer" B = 27 New_String = A & ", ", " & B 

Den returnerer det sammenkædede output.

Eksempler på sammenkædning af strenge og variabler i Excel VBA (med makro, UDF og UserForm)

Vi har lært at sammenkæde en streng (s) og en variabel (s) med VBA i Excel. Denne gang vil vi undersøge nogle eksempler, der involverer sammenkædning af streng (s) og variabel (s) med VBA .

Eksempel 1: Udvikling af en makro til sammenkædning af streng(e) og variabel(e) i Excel VBA

Vi har lært at sammenkæde strenge og variabler med VBA . Denne gang vil vi udvikle en Makro til at sammenkæde strenge og variabler i flere kolonner i et regneark.

Her har vi et datasæt med navne på bøger , forfattere , og priser af nogle bøger fra en boghandel ved navn Martin Bookstore.

Lad os udvikle en Makro at sammenkæde kolonner 1, 2, og 3 af datasættet B4:D14 i celle F4 .

VBA kode vil være:

⧭ VBA-kode:

 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 

⧭ Udgang:

Kør denne kode. Du vil få den 3 kolonner sammenkædet i intervallet F4:F14.

Læs mere: Makro til sammenkædning af flere kolonner i Excel (med UDF og UserForm)

Eksempel 2: Oprettelse af en brugerdefineret funktion til sammenkædning af streng (s) og variabel (s) i Excel VBA

Vi har lært at udvikle en Makro til at sammenkæde flere kolonner i et datasæt. Denne gang opretter vi en Brugerdefineret funktion til at sammenkæde strenge eller variabler i Excel.

Den komplette VBA kode vil være:

⧭ VBA-kode:

 Function 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 

⧭ Udgang:

Vælg den kolonne, hvor du vil sammenkæde området, og indtast denne formel:

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

Den vender tilbage Hun, H. Rider Haggard som output.

Indtast formlen igen:

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

[ Array-formel Så glem ikke at trykke på CTRL + SHIFT + ENTER medmindre du er i Office 365 .]

Den sammenkæder 30 med alle værdierne i intervallet B4:B14 .

Endelig skal du indtaste:

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

[igen Array-formel Så glem ikke at trykke på CTRL + SHIFT + ENTER medmindre du er i Office 365 .]

Den sammenkæder alle værdierne i intervallet B4:B14 med dem i C4:C14 .

Læs mere: Sådan sammenkædes i Excel (3 egnede måder at sammenkæde på)

Lignende læsninger:

  • Sådan kombineres tekst fra to eller flere celler i én celle i Excel (5 metoder)
  • Kombiner rækker i én celle i Excel
  • Sammenkædning af tal i Excel (4 hurtige formler)
  • Kombiner tekst i Excel (8 egnede måder)
  • Sådan sammenkædes apostrof i Excel (6 nemme måder)

Eksempel 3: Udvikling af en UserForm til at sammenkæde streng(e) og variabel(e) i et andet regneark i Excel VBA

Vi har lært at udvikle en Makro og en Brugerdefineret funktion til at sammenkæde strenge og værdier. Endelig udvikler vi en UserForm til at sammenkæde strenge og værdier til den ønskede placering i det ønskede regneark.

⧪ Trin 1: Indsættelse af brugerformularen

Gå til Indsæt> UserForm i VBA værktøjslinjen for at indsætte en ny UserForm .

⧪ Trin 2: Træk værktøjer til brugerformularen

A UserForm kaldet UserForm1 vil blive åbnet, sammen med en Værktøjskasse kaldet Kontrol .

Før musen hen over den e værktøjskasse og træk 2 ListBoxer, 5 TextBoxer, 7 Etiketter og1 KommanButtons i UserForm .

Ændre visningerne af de Etiketter som vist i figuren.

På samme måde kan du ændre visningen af CommandButton til OK .

⧪ Trin 3: Skrivning af kode til tekstboks1

Dobbeltklik på Tekstboks1 . A Privat underprocedure kaldet TextBox1_Change åbnes. Indtast følgende kode der.

 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 

⧪ Trin 4: Skrivning af kode til tekstboks3

På samme måde kan du dobbeltklikke på Tekstboks3 . en anden Privat underprocedure kaldet TextBox3_Change åbnes. Indtast følgende kode der.

 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(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) +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 

⧪ Trin 5: Skrivning af kode til tekstboks4

Du kan også dobbeltklikke på Tekstboks3 . en anden Privat underprocedure kaldet TextBox3_Change åbnes. Indtast følgende kode der.

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

⧪ Trin 6: Skrivning af kode til ListBox2

Dobbeltklik derefter på ListBox2 . Når den Privat underprocedure kaldet ListBox2_Click åbnes, og indtast denne kode der.

 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 End Sub 

⧪ Trin 7: Skrivning af kode til CommanButton1

Du skal også dobbeltklikke på CommandButton1 . Efter den Privat underprocedure kaldet CommandButton1_Change åbnes, og indsæt følgende kode der.

 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 = Count + 1End If Next i Separator = 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 "Vælg alle mulighederne korrekt.", vbExclamation End Sub 

⧪ Trin 7: Skrive kode til at køre brugerformularen

Nu kommer det sidste trin. Indsæt en ny Modul fra den VBA værktøjslinjen og indsæt følgende kode.

 Sub Run_UserForm() UserForm1.Caption = "Concatenate Values" 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 UserForm1.Show End Sub 

⧪ Trin 8: Kørsel af brugerformularen

Din UserForm er nu klar til brug. For at køre den skal du vælge datasættet fra regnearket (herunder Overskrifter ) og køre den Makro kaldet Run_UserForm .

UserForm indlæses med alle mulighederne. Den valgte områdeadresse vises på Tekstboks1 ( B3:D4 Hvis du ønsker det, kan du ændre det. Det valgte område i regnearket vil ændre sig.

Vælg de kolonner, du vil sammenføje, fra Kolonner til sammenkædning ListBox. Her har jeg valgt Bogens navn og Pris .

Indtast den Separator . Her har jeg indtastet en komma ( , ).

Vælg det regneark, hvor du vil placere det sammenkædede område fra Sammenkædet i Her har jeg indtastet Ark3 .

(I det øjeblik du vælger arket, aktiveres det, selv om det ikke er det aktive ark.)

Indsæt derefter den Output placering Det er cellereferencen til den første celle i det sammenkædede område. Her har jeg sat B3 .

(I det øjeblik, du går ind i Output placering vælges outputområdet).

Og endelig skal du angive navnet på den Output Header (overskriften på outputområdet). Her har jeg sat Sammenkædet område .

(I det øjeblik, du sætter den Output Header , vil overskriften på udgangskolonnen blive indstillet.)

Klik på OK Du får det ønskede output på det ønskede sted.

Læs mere: Sådan sammenkædes streng og heltal ved hjælp af VBA

Konklusion

Her er et par eksempler på, hvordan du kan bruge Excel VBA til at sammenkæde strenge og variabler. Jeg håber, at eksemplerne har gjort det hele klart for dig. Har du spørgsmål? Du er velkommen til at spørge os. Og glem ikke at besøge vores hjemmeside ExcelWIKI for flere indlæg og opdateringer.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.