Kazalo
Med delom z VBA v Excelu moramo v delovnem listu pogosto združiti niz (s) in spremenljivko (s). Združevanje niza (s) in spremenljivke (s) se pogosto uporablja v skoraj vseh sektorjih naših del, od povzemanja rezultatov študentov do analize zapletenega podjetja. V tem članku vam bom pokazal, kako lahko v delovnem listu združite niz (s) in spremenljivko (s) z VBA v Excelu. Razložil bom stvari z ustreznimi primeri in ilustracijami.
Povezovanje niza (s) in spremenljivke (s) v programu Excel VBA (hitri prikaz)
Prenesi delovni zvezek za prakso
Prenesite ta delovni zvezek za vadbo, ki ga lahko uporabljate med branjem tega članka.
Povezovanje niza in spremenljivke.xlsmPovezovanje niza (-ov) in spremenljivke (-k) v programu Excel VBA (analiza po korakih)
Najprej si oglejmo, kako lahko združimo niz (s) in spremenljivko (s) v VBA korak za korakom.
⧪ Povezovanje nizov:
Povezovanje dveh ali več nizov v VBA , lahko uporabite aritmetično dodajanje (+) simbol in ampersand (& ) simbol.
Če želite na primer združiti niza "Velika pričakovanja" in . "Zgodba o dveh mestih" z vejica , lahko uporabite:
New_String = "Velika pričakovanja" + ", " + "Zgodba o dveh mestih"
Ali,
New_String = "Velika pričakovanja" & ", " & "Zgodba o dveh mestih"
Zaženite katero koli od zgornjih kod. Prikazal se bo združeni rezultat, Velika pričakovanja, Zgodba o dveh mestih .
⧪ Povezovanje spremenljivke (s)
Če vse spremenljivke vsebujejo vrednosti nizov, lahko uporabite tako aritmetično dodajanje (+) simbol in ampersand (&) simbol.
Če tega ne storijo, lahko uporabite samo ampersand (&) simbol za združevanje.
Na primer, Imejmo dve spremenljivki, A in . B .
A vsebuje niz, "Zgodba o dveh mestih" in B vsebuje drug niz, "Štirideset pravil ljubezni" .
Uporabite lahko oba dodajanje (+) simbol in ampersand (&) za njihovo združevanje.
A = "Zgodba o dveh mestih" B = "Štirideset pravil ljubezni" New_String = A + ", " + B
Ali,
A = "Zgodba o dveh mestih" B = "Štirideset pravil ljubezni" New_String = A & ", " & B
V obeh primerih vrneta strnjeni niz.
Toda če A je niz ( " Zgodba o dveh mestih" ) in B je celo število ( 27 ), morate uporabiti ampersand (&) simbol za združevanje.
A = "Zgodba o dveh mestih" B = 27 New_String = A & ", " & B
Vrnil bo zlepljeni rezultat.
Primeri za združevanje nizov in spremenljivk v programu Excel VBA (vključno z makrom, UDF in uporabniškim obrazcem)
Naučili smo se združiti niz (s) in spremenljivko (s) z VBA v Excelu. Tokrat bomo raziskali nekaj primerov, ki vključujejo združevanje niza (s) in spremenljivke (s) z VBA .
Primer 1: Razvoj makra za združevanje niza (-ov) in spremenljivke (-k) v programu Excel VBA
Naučili smo se združevati nize in spremenljivke z VBA . Tokrat bomo razvili Makro za združevanje nizov in spremenljivk več stolpcev v delovnem listu.
Tu imamo nabor podatkov z imena knjig , avtorji in cene nekaj knjig iz knjigarne Martin Bookstore.
Razvijmo Makro za združevanje stolpcev 1, 2, in . 3 nabora podatkov B4:D14 v celici F4 .
Spletna stran VBA koda bo:
⧭ Koda 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
⧭ Izhod:
Zaženite to kodo. 3 stolpci, združeni v območju F4:F14.
Preberite več: Makro za združevanje več stolpcev v Excelu (z UDF in UserForm)
Primer 2: Ustvarjanje uporabniško določene funkcije za združevanje niza (s) in spremenljivke (s) v programu Excel VBA
Naučili smo se razviti Makro za združevanje več stolpcev podatkovnega niza. Tokrat bomo ustvarili Funkcija, opredeljena s strani uporabnika za združevanje nizov ali spremenljivk v Excelu.
Celoten VBA koda bo:
⧭ Koda VBA:
Funkcija 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
⧭ Izhod:
Izberite stolpec, v katerem želite združiti območje, in vnesite to formulo:
=ConcatenateValues("Ona", "H. Rider Haggard",", ")
Vrnil se bo Ona, H. Rider Haggard kot rezultat.
Ponovno vnesite formulo:
=ConcatenateValues(B4:B14,30,", ")
[ Formula polja . Zato ne pozabite pritisniti CTRL + SHIFT + ENTER razen če ste v Office 365 .]
30 se združi z vsemi vrednostmi iz območja B4:B14 .
Na koncu vnesite:
=ConcatenateValues(B4:B14,C4:C14,", ")
[Ponovno Formula polja . Zato ne pozabite pritisniti CTRL + SHIFT + ENTER razen če ste v Office 365 .]
Združil bo vse vrednosti iz območja B4:B14 s tistimi iz C4:C14 .
Preberite več: Kako konkatenirati v Excelu (3 primerni načini)
Podobna branja:
- Kako združiti besedilo iz dveh ali več celic v eno celico v Excelu (5 metod)
- Združevanje vrstic v eno celico v programu Excel
- Povezovanje številk v Excelu (4 hitre formule)
- Združevanje besedila v Excelu (8 primernih načinov)
- Kako združiti apostrofe v Excelu (6 preprostih načinov)
Primer 3: Razvoj uporabniškega obrazca za združevanje niza (-ov) in spremenljivke (-k) v drugem delovnem listu v programu Excel VBA
Naučili smo se razviti Makro in Funkcija, opredeljena s strani uporabnika za združevanje nizov in vrednosti. Na koncu bomo razvili Uporabniški obrazec za združevanje nizov in vrednosti na želeno mesto želenega delovnega lista.
⧪ Korak 1: Vstavljanje uporabniškega obrazca
Pojdite na Insert> UserForm možnost v VBA orodne vrstice za vstavitev novega Uporabniški obrazec .
⧪ Korak 2: Vlečenje orodij na uporabniški obrazec
A Uporabniški obrazec . UserForm1 se bo odprlo in odprlo se bo tudi Zbirka orodij . Nadzor .
Premaknite miško nad e Toolbox in povlecite 2 ListBoxa, 5 TextBoxov, 7 nalepk in 1 CommanButtons v UserForm. .
Spremenite prikaze Etikete kot je prikazano na sliki.
Podobno spremenite prikaz CommandButton na . V REDU .
⧪ Korak 3: Pisanje kode za TextBox1
Dvakrat kliknite na TextBox1 . A Zasebna podprocedura . TextBox1_Change Odprla se bo. Vnesite naslednjo kodo.
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
⧪ Korak 4: Pisanje kode za TextBox3
Podobno dvakrat kliknite na TextBox3 . drugo Zasebna podprocedura . TextBox3_Change Odprla se bo. Vnesite naslednjo kodo.
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 i Rng.Cells(1, 1) = UserForm1.TextBox4.Text Exit Sub Task: x = 5 End Sub
⧪ 5. korak: Pisanje kode za besedilno polje4
Prav tako dvakrat kliknite na TextBox3 . drugo Zasebna podprocedura . TextBox3_Change Odprla se bo. Vnesite naslednjo kodo.
Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub
⧪ 6. korak: Pisanje kode za ListBox2
Nato dvakrat kliknite na ListBox2 . Ko je Zasebna podprocedura . ListBox2_Click odpre in vanj vnesite to kodo.
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
⧪ Korak 7: Pisanje kode za CommanButton1
Prav tako dvakrat kliknite na CommandButton1 . Po Zasebna podprocedura . CommandButton1_Change in vanj vstavite naslednjo kodo.
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 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 "Izberite vse možnosti pravilno.", vbExclamation End Sub
⧪ Korak 7: Pisanje kode za zagon uporabniškega obrazca
Zdaj je na vrsti zadnji korak. Vstavite novo Modul iz VBA orodne vrstice in vstavite naslednjo kodo.
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
⧪ Korak 8: Zagon uporabniškega obrazca
Vaš Uporabniški obrazec je zdaj pripravljen za uporabo. Če ga želite zagnati, izberite nabor podatkov z delovnega lista (Vključno z Naslovnice ) in zaženite Makro imenovan . Run_UserForm .
Spletna stran Uporabniški obrazec se naložijo vse možnosti. Izbrani naslov območja bo prikazan na TextBox1 ( B3: D4 tukaj). Če želite, ga lahko spremenite. Izbrano območje v delovnem listu se bo spremenilo.
Stolpce, ki jih želite združiti, izberite iz Stolpci za združevanje ListBox. Tu sem izbral Ime knjige in . Cena .
Vnesite Separator . Tukaj sem vnesel vejica ( , ).
Izberite ime delovnega lista, v katerega želite vnesti združeno območje iz Vključeno v v polje za seznam. Tu sem vnesel List3 .
(Ko izberete list, se aktivira, tudi če ni aktiven.)
Nato vstavite Izhodna lokacija To je referenca na celico prve celice povezanega območja. B3 .
(V trenutku, ko vstopite v Izhodna lokacija , bo izbrano izhodno območje).
Na koncu vnesite ime Izhodni header (glavo izhodnega območja). Tu sem vstavil Konkateniran razpon .
(V trenutku, ko postavite Izhodni header , se nastavi glavo izhodnega stolpca.)
Kliknite . V REDU . Želeni rezultat boste dobili na želenem mestu.
Preberite več: Kako združiti niz in celo število z uporabo VBA
Zaključek
To je nekaj primerov, v katerih lahko uporabite Excel VBA za združevanje nizov in spremenljivk. Upam, da vam je bilo s temi primeri vse jasno. Imate kakšno vprašanje? Vprašajte nas. In ne pozabite obiskati našega spletnega mesta ExcelWIKI za več objav in posodobitev.