Cuprins
În timp ce lucrați cu VBA în Excel, deseori trebuie să concatenăm șirul (s) și variabila (s) într-o foaie de lucru. Concatenarea șirului (s) și a variabilei (s) este utilizată pe scară largă în aproape toate sectoarele din lucrările noastre, începând de la rezumarea rezultatelor studenților până la analiza unei afaceri complexe. În acest articol, vă voi arăta cum puteți concatena șirul (s) și variabila (s) într-o foaie de lucru cu VBA în Excel. Voi explica lucrurile cu exemple și ilustrații adecvate.
Concatenarea șirului (s) și a variabilei (s) în Excel VBA (Vizualizare rapidă)
Descărcați caietul de practică
Descărcați acest caiet de exerciții pentru a vă exercita în timp ce citiți acest articol.
Concatenarea șirurilor și a variabilelor.xlsmConcatenarea șirului (s) și a variabilei (s) în Excel VBA (analiză pas cu pas)
Mai întâi de toate, să vedem cum putem concatena șirul (s) și variabila (s) în VBA pas cu pas.
⧪ Concatenarea șirului (s):
Pentru a concatena două sau mai multe șiruri de caractere în VBA , puteți folosi atât aritmetica adăugare (+) și simbolul ampersandă (& ) simbol.
De exemplu, pentru a concatena șirurile de caractere "Marile așteptări" și "Povestea a două orașe" cu un virgulă , puteți folosi:
New_String = "Great Expectations" + ", " + "A Tale of Two Cities"
Sau,
New_String = "Great Expectations" & ", " & "A Tale of Two Cities"
Rulați oricare dintre codurile de mai sus. Se va afișa rezultatul concatenat, Marile speranțe, Poveste din două orașe .
⧪ Concatenarea variabilei (s)
Dacă toate variabilele conțin valori de tip șir de caractere, atunci puteți utiliza atât aritmetica adăugare (+) și simbolul ampersandă (&) simbol.
Dar dacă nu, atunci puteți folosi doar ampersandă (&) simbolul de concatenare.
De exemplu, să avem două variabile, A și B .
A conține un șir de caractere, "Povestea a două orașe" , și B conține un alt șir de caractere, "Cele patruzeci de reguli ale iubirii" .
Puteți utiliza atât adăugare (+) simbolul și ampersandă (&) pentru a le concatena.
A = "Povestea a două orașe" B = "Cele patruzeci de reguli ale iubirii" New_String = A + ", " + B
Sau,
A = "Povestea a două orașe" B = "Cele patruzeci de reguli ale iubirii" New_String = A & ", " & B
În ambele cazuri, acestea vor returna șirul concatenat.
Dar dacă A este un șir de caractere ( "Poveste din două orașe" ) și B este un număr întreg ( 27 ), trebuie să utilizați ampersandă (&) simbolul de concatenare.
A = "A Tale of Two Cities" B = 27 New_String = A & ", " & B
Acesta va returna rezultatul concatenat.
Exemple de concatenare a șirurilor de caractere și a variabilelor în Excel VBA (implicând macro, UDF și UserForm)
Am învățat să concatenăm șirul (s) și variabila (s) cu VBA în Excel. De data aceasta vom explora câteva exemple care implică concatenarea șirului (s) și a variabilei (s) cu VBA .
Exemplul 1: Dezvoltarea unui macro pentru a concatena șirul (s) și variabila (s) în Excel VBA
Am învățat să concatenăm șiruri de caractere și variabile cu VBA De data aceasta vom dezvolta un Macro pentru a concatena șiruri de caractere și variabile din mai multe coloane dintr-o foaie de calcul.
Aici avem un set de date cu nume de cărți , autori , și prețuri a unor cărți de la o librărie numită Martin Bookstore.
Să dezvoltăm un Macro pentru a concatena coloane 1, 2, și 3 a setului de date B4:D14 în celulă F4 .
The VBA codul va fi:
⧭ Cod VBA:
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
⧭ Ieșire:
Rulați acest cod. Veți obține 3 coloane concatenate în intervalul F4:F14.
Citiți mai mult: Macro pentru a concatena mai multe coloane în Excel (cu UDF și UserForm)
Exemplul 2: Crearea unei funcții definite de utilizator pentru a concatena șirul (s) și variabila (s) în Excel VBA
Am învățat să dezvoltăm o Macro pentru a concatena mai multe coloane dintr-un set de date. De data aceasta vom crea un fișier Funcție definită de utilizator pentru a concatena șiruri de caractere sau variabile în Excel.
Complet VBA codul va fi:
⧭ Cod VBA:
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
⧭ Ieșire:
Selectați coloana în care doriți să concatenați intervalul și introduceți această formulă:
=ConcatenateValues("She", "H. Rider Haggard",", ", ")
Se va întoarce. Ea, H. Rider Haggard ca ieșire.
Din nou, introduceți formula:
=ConcatenateValues(B4:B14,30,", ", ")
[ Formula Array Așa că nu uitați să apăsați CTRL + SHIFT + ENTER dacă nu sunteți în Office 365 .]
Se va concatena 30 cu toate valorile din intervalul B4:B14 .
În cele din urmă, introduceți:
=ConcatenateValues(B4:B14,C4:C14,", ")
[Din nou] Formula Array Așa că nu uitați să apăsați CTRL + SHIFT + ENTER dacă nu sunteți în Office 365 .]
Se vor concatena toate valorile din intervalul B4:B14 cu cele ale C4:C14 .
Citiți mai mult: Cum să concatenăm în Excel (3 moduri adecvate)
Lecturi similare:
- Cum să combinați textul din două sau mai multe celule într-o singură celulă în Excel (5 metode)
- Combinați rândurile într-o singură celulă în Excel
- Concatenarea numerelor în Excel (4 Formule rapide)
- Combinați textul în Excel (8 moduri adecvate)
- Cum să concatenați Apostrophe în Excel (6 moduri simple)
Exemplul 3: Dezvoltarea unui formular utilizator pentru a concatena șirul (s) și variabila (s) într-o foaie de lucru diferită în Excel VBA
Am învățat să dezvoltăm o Macro și un Funcție definită de utilizator pentru a concatena șiruri de caractere și valori. În cele din urmă, vom dezvolta o aplicație UserForm pentru a concatena șiruri de caractere și valori în locația dorită din foaia de calcul dorită.
⧪ Pasul 1: Inserarea formularului de utilizator
Mergeți la Insert> UserForm din cadrul opțiunii VBA pentru a insera un nou UserForm .
⧪ Pasul 2: Tragerea instrumentelor în formularul de utilizator
A UserForm numit UserForm1 va fi deschis, împreună cu un Cutia de instrumente numit Control .
Deplasați mouse-ul peste e Toolbox și trageți 2 ListBoxes, 5 TextBoxes, 7 Labels și 1 CommanButtons în UserForm. .
Modificați afișajele din Etichete așa cum se arată în figură.
În mod similar, modificați afișajul din CommandButton la OK .
⧪ Pasul 3: Scrierea codului pentru TextBox1
Faceți dublu clic pe TextBox1 . A Subprocedură privată numit TextBox1_Change Introduceți acolo următorul cod.
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
⧪ Pasul 4: Scrierea codului pentru TextBox3
În mod similar, faceți dublu clic pe TextBox3 . altul Subprocedură privată numit TextBox3_Change Introduceți acolo următorul cod.
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) +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 If Next i Rng.Cells(1, 1) = UserForm1.TextBox4.Text Exit Sub Task: x = 5 End Sub
⧪ Pasul 5: Scrierea codului pentru TextBox4
De asemenea, faceți dublu clic pe TextBox3 . altul Subprocedură privată numit TextBox3_Change Introduceți acolo următorul cod.
Private Sub TextBox4_Change() Dacă UserForm1.TextBox3.Text "" Atunci Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub
⧪ Pasul 6: Scrierea codului pentru ListBox2
Apoi faceți dublu clic pe ListBox2 . atunci când Subprocedură privată numit ListBox2_Click se deschide, introduceți acest cod acolo.
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 If Next i If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End If End Sub
⧪ Pasul 7: Scrierea codului pentru CommanButton1
De asemenea, faceți dublu clic pe CommandButton1 . după ce Subprocedură privată numit CommandButton1_Change se deschide, inserați acolo următorul cod.
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 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 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 "Alegeți corect toate opțiunile.", vbExclamation End Sub
⧪ Pasul 7: Scrierea codului pentru rularea formularului de utilizator
Acum este pasul final. Introduceți un nou Modul de la VBA și introduceți următorul cod.
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
⧪ Pasul 8: Rularea formularului de utilizator
UserForm este acum gata de utilizare. Pentru a o rula, selectați setul de date din foaia de lucru (inclusiv Capetele ) și rulați programul Macro numit Run_UserForm .
The UserForm se va încărca cu toate opțiunile. Adresa de interval selectată va fi afișată pe TextBox1 ( B3:D4 aici). Dacă doriți, o puteți schimba. Intervalul selectat în foaia de lucru se va modifica.
Selectați coloanele pe care doriți să le concatenați din coloana Coloane de contopit ListBox. Aici am selectat Numele cărții și Preț .
Introduceți numărul Separator . Aici am introdus un virgulă ( , ).
Selectați numele foii de calcul în care doriți să plasați intervalul concatenat din lista Concatenate în Aici am introdus Foaie3 .
(În momentul în care selectați foaia, aceasta va fi activată, chiar dacă nu este cea activă.)
Apoi introduceți Locația de ieșire Este referința celulei din prima celulă a intervalului concatenat. Aici am pus B3 .
(În momentul în care intrați în Locația de ieșire , se va selecta intervalul de ieșire).
Și, în final, introduceți numele fișierului Antet de ieșire (antetul intervalului de ieșire). Aici am pus Interval concatenat .
(În momentul în care ați pus Antet de ieșire , se va seta antetul coloanei de ieșire).
Faceți clic pe OK . veți obține rezultatul dorit în locația dorită.
Citiți mai mult: Cum să concatenați șiruri de caractere și numere întregi folosind VBA
Concluzie
Iată câteva exemple în care puteți folosi Excel VBA pentru a concatena șiruri de caractere și variabile. Sper că exemplele au fost destul de clare pentru dumneavoastră. Aveți întrebări? Nu ezitați să ne întrebați. Și nu uitați să vizitați site-ul nostru ExcelWIKI pentru mai multe postări și actualizări.