Hogyan kell összekapcsolni a karakterláncot és a változót az Excel VBA-ban (részletes elemzés)

  • Ossza Meg Ezt
Hugh West

Míg a munka során VBA az Excelben gyakran kell egy munkalapban string (s) és változó (s) összekapcsolása. A string (s) és változó (s) összekapcsolása széles körben használatos szinte minden területen a munkáinkban, kezdve a diákok eredményeinek összegzésétől egy összetett vállalkozás elemzéséig. Ebben a cikkben megmutatom, hogyan lehet string (s) és változó (s) összekapcsolása egy munkalapban a következővel VBA Excelben. Megfelelő példákkal és illusztrációkkal fogom elmagyarázni a dolgokat.

String (s) és változó (s) összekapcsolása az Excel VBA-ban (gyorsnézet)

Gyakorlati munkafüzet letöltése

Töltse le ezt a gyakorlati munkafüzetet, hogy gyakorolhasson, miközben ezt a cikket olvassa.

String és változó összekapcsolása.xlsm

String (s) és változó (s) összekapcsolása az Excel VBA-ban (lépésről lépésre történő elemzés)

Először is, lássuk, hogyan tudjuk a string (s) és a változó (s) összekapcsolását a VBA lépésről lépésre.

⧪ Összekötő karakterlánc(ok):

Két vagy több karakterlánc összekapcsolása a VBA , használhatja mind a számtani, mind a számtani összeadás (+) szimbólum és a ampersand (& ) szimbólum.

Például a következő karakterláncok összekapcsolásához "Nagy várakozások" és "Két város története" egy vessző , használhatja:

 New_String = "Nagy várakozások" + ", " + "Két város története" 

Vagy,

 New_String = "Nagy várakozások" & ", " & "Két város története" 

Futtassa a fenti kódok bármelyikét. Megjeleníti az összefűzött kimenetet, Nagy várakozások, Két város története .

⧪ Összekötő változó (s)

Ha az összes változó karakterlánc értékeket tartalmaz, akkor mind az aritmetikai, mind a számtani összeadás (+) szimbólum és a zárójel (&) szimbólum.

De ha nem, akkor csak a zárójel (&) szimbólumot kell összekapcsolni.

Például: Legyen két változó, A és B .

A egy karakterláncot tartalmaz, "Két város története" , és B egy másik karakterláncot tartalmaz, "A szerelem negyven szabálya" .

Használhatja a összeadás (+) szimbólum és zárójel (&) szimbólumot, hogy összekapcsolja őket.

 A = "Két város története" B = "A szerelem negyven szabálya" New_String = A + ", " + B 

Vagy,

 A = "Két város története" B = "A szerelem negyven szabálya" New_String = A & ", " & B 

Mindkét esetben az összefűzött karakterláncot adják vissza.

De ha A egy karakterlánc ( "Két város története" ) és B egész szám ( 27 ), akkor a zárójel (&) szimbólumot kell összekapcsolni.

 A = "Két város története" B = 27 New_String = A & ", " & B 

Visszaadja az összefűzött kimenetet.

Példák a karakterláncok és változók összekapcsolására az Excel VBA-ban (makró, UDF és UserForm bevonásával)

Megtanultuk, hogy a string (s) és a változó (s) összekapcsolását a VBA Ezúttal néhány példát fogunk megvizsgálni, amelyek a string (s) és a változó (s) összekapcsolását tartalmazzák a VBA .

Példa 1: Makró fejlesztése a karakterlánc (s) és a változó (s) Excel VBA-ban történő összekapcsolására

Megtanultuk, hogy a karakterláncok és változók összekapcsolását a VBA . Ezúttal kifejlesztünk egy Makró egy munkalap több oszlopának karakterláncainak és változóinak összekapcsolására.

Itt van egy adathalmazunk könyvnevek , szerzők , és árak a Martin Könyvesbolt nevű könyvesbolt néhány könyvét.

Fejlesszünk ki egy Makró oszlopok összekapcsolása 1, 2, és 3 az adathalmaz B4:D14 cellában F4 .

A VBA kód lesz:

⧭ VBA kód:

 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 

⧭ Kimenet:

Futtassa ezt a kódot. 3 oszlopok összekapcsolva a következő tartományban F4:F14.

További információ: Makró több oszlop összekapcsolására az Excelben (UDF és UserForm segítségével)

Példa 2: Felhasználó által definiált függvény létrehozása a karakterlánc (s) és a változó (s) összekapcsolására az Excel VBA-ban

Megtanultuk, hogy fejlesszünk ki egy Makró egy adathalmaz több oszlopának összekapcsolására. Ezúttal létrehozunk egy Felhasználó által meghatározott funkció a karakterláncok vagy változók Excelben történő összekapcsolásához.

A teljes VBA kód lesz:

⧭ VBA kód:

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

⧭ Kimenet:

Jelölje ki azt az oszlopot, ahol a tartományt össze kívánja kapcsolni, és adja meg ezt a képletet:

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

Vissza fog térni Ő, H. Rider Haggard mint kimenet.

Ismét adja meg a képletet:

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

[ Array képlet Tehát ne felejtsd el megnyomni a CTRL + SHIFT + ENTER hacsak nem vagy Office 365 .]

A 30-as értéket összekapcsolja a tartomány összes értékével. B4:B14 .

Végül írja be:

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

[Ismét Array képlet Tehát ne felejtsd el megnyomni a CTRL + SHIFT + ENTER hacsak nem vagy Office 365 .]

A program a tartomány összes értékét összekapcsolja a B4:B14 az alábbiakkal C4:C14 .

További információ: Hogyan kell az Excelben összekapcsolni (3 megfelelő módszer)

Hasonló olvasmányok:

  • Két vagy több cellából származó szöveg kombinálása egy cellába az Excelben (5 módszer)
  • Sorok kombinálása egy cellába az Excelben
  • Számok összekapcsolása Excelben (4 gyors képlet)
  • Szövegek kombinálása Excelben (8 megfelelő mód)
  • Hogyan kell összekapcsolni az Apostrofát az Excelben (6 egyszerű módja)

Példa 3: UserForm fejlesztése a karakterlánc (s) és a változó (s) összekapcsolására egy másik munkalapon az Excel VBA-ban

Megtanultuk, hogy fejlesszünk ki egy Makró és egy Felhasználó által meghatározott funkció a karakterláncok és értékek összekapcsolására. Végül, kifejlesztünk egy UserForm a karakterláncok és értékek összekapcsolása a kívánt munkalap kívánt helyére.

⧪ 1. lépés: A UserForm beillesztése

Menjen a Insert> UserForm opciót a VBA eszköztáron egy új UserForm .

⧪ 2. lépés: Eszközök áthúzása a felhasználói űrlapra

A UserForm a címen. UserForm1 megnyílik, valamint egy Szerszámosláda a címen. Vezérlés .

Mozgassa az egeret a e eszköztárat, és húzzon 2 ListBoxot, 5 TextBoxot, 7 címkét és 1 parancsgombot a UserFormba. .

Módosítsa a kijelzőket a Címkék az ábrán látható módon.

Hasonlóképpen, változtassa meg a kijelzőt a CommandButton a címre. OK .

⧪ 3. lépés: A TextBox1 kódjának megírása

Kattintson duplán a TextBox1 . A Privát alprocedúra a címen. TextBox1_Change A következő kódot írja be.

 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 

⧪ 4. lépés: A TextBox3 kódjának megírása

Hasonlóképpen, kattintson duplán a TextBox3 . egy másik Privát alprocedúra a címen. TextBox3_Change A következő kódot írja be.

 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. lépés: A TextBox4 kódjának megírása

Kattintson duplán a TextBox3 . egy másik Privát alprocedúra a címen. TextBox3_Change A következő kódot írja be.

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

⧪ 6. lépés: A ListBox2 kódjának megírása

Ezután kattintson duplán a ListBox2 . Amikor a Privát alprocedúra a címen. ListBox2_Click megnyílik, írja be ezt a kódot.

 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 If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End If End Sub 

⧪ 7. lépés: A CommanButton1 kódjának megírása

Kattintson duplán a CommandButton1 . Miután a Privát alprocedúra a címen. CommandButton1_Change megnyílik, illessze be oda a következő kódot.

 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+1.End 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 If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message:MsgBox "Válassza ki az összes lehetőséget helyesen.", vbExclamation End Sub 

⧪ 7. lépés: Kód írása a UserForm futtatásához

Most következik az utolsó lépés. Szúrjon be egy új Modul a VBA eszköztárat, és illessze be a következő kódot.

 Sub Run_UserForm() UserForm1.Caption = "Értékek összekapcsolása" 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 

⧪ 8. lépés: A UserForm futtatása

Az Ön UserForm A futtatáshoz válassza ki az adathalmazt a munkalapról (beleértve a Fejlécek ) és futtassa a Makró a címen. Run_UserForm .

A UserForm betöltődik az összes opcióval együtt. A kiválasztott tartomány címe megjelenik a TextBox1 ( B3:D4 itt). Ha kívánja, megváltoztathatja. A munkalapon a kiválasztott tartomány megváltozik.

Válassza ki az összefűzni kívánt oszlopokat a Konkattálandó oszlopok ListBox. Itt kiválasztottam Könyv neve és Ár .

Adja meg a Elválasztó . Itt adtam be egy vessző ( , ).

Válassza ki a munkalap nevét, ahová az összefűzött tartományt szeretné helyezni a Összekapcsolva In listabox. Itt beírtam Sheet3 .

(Abban a pillanatban, amikor kiválasztja a lapot, az aktiválódik, még akkor is, ha nem ez az aktív lap.)

Ezután helyezze be a Kimenet helye Ez az összekapcsolt tartomány első cellájának a cellahivatkozása. Itt a B3 .

(Abban a pillanatban, amikor belép a Kimenet helye , a kimeneti tartomány lesz kiválasztva).

Végül pedig adja meg a nevét a Kimeneti fejléc (A kimeneti tartomány fejlécében). Itt a Összekapcsolt tartomány .

(Abban a pillanatban, amikor a Kimeneti fejléc , a kimeneti oszlop fejléce lesz beállítva.).

Kattintson a címre. OK A kívánt kimenetet a kívánt helyen fogja megkapni.

További információ: Hogyan lehet egy karakterláncot és egy egész számot a VBA segítségével összekapcsolni?

Következtetés

Íme néhány példa, ahol az Excel-t használhatja. VBA a karakterláncok és változók összekapcsolására. Remélem, a példák mindent eléggé érthetővé tettek számodra. Van kérdésed? Kérdezz bátran. És ne felejtsd el meglátogatni az oldalunkat. ExcelWIKI további posztokért és frissítésekért.

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.