Sisukord
Töötades koos VBA Excelis tuleb meil sageli töölehes string (s) ja muutuja (s) liita. String (s) ja muutuja (s) liita kasutatakse laialdaselt peaaegu kõigis meie tööde valdkondades, alates õpilaste tulemuste kokkuvõttest kuni keerulise ettevõtte analüüsini. Selles artiklis näitan teile, kuidas saate liita string (s) ja muutuja (s) töölehes koos VBA Excelis. Ma selgitan asju korralike näidete ja illustratsioonidega.
Stringi (s) ja muutuja (s) ühendamine Excel VBA-s (Kiirvaade)
Lae alla praktiline töövihik
Lae alla see harjutusvihik, et seda artiklit lugedes harjutada.
Stringi ja muutuja ühendamine.xlsmStringi (s) ja muutuja (s) ühendamine Excel VBA-s (samm-sammuline analüüs)
Kõigepealt vaatame, kuidas me saame stringi (s) ja muutuja (s) liita in VBA samm-sammult.
⧪ Konkateeriv string (s):
Kahe või enama stringi ühendamiseks in VBA , saate kasutada nii aritmeetikat kui ka aritmeetilist lisamine (+) sümbol ja ampersand (& ) sümbol.
Näiteks, et liita stringid "Suured ootused" ja "Lugu kahest linnast" koos koma võite kasutada:
New_String = "Suured ootused" + ", " + "Kahe linna lugu"
Või,
New_String = "Suured ootused" & ", " & "Kahe linna lugu"
Käivitage mõni ülaltoodud koodidest. See kuvab liidetud väljundi, Suured ootused, lugu kahest linnast .
⧪ Ühendav muutuja (s)
Kui kõik muutujad sisaldavad stringi väärtusi, siis saab kasutada nii aritmeetilist lisamine (+) sümbol ja ampersand (&) sümbol.
Aga kui nad seda ei tee, siis saate kasutada ainult ampersand (&) sümbol, mida liita.
Näiteks olgu meil kaks muutujat, A ja B .
A sisaldab stringi, "Lugu kahest linnast" ja B sisaldab teist stringi, "Nelikümmend armastuse reeglit" .
Võite kasutada nii lisamine (+) sümbol ja ampersand (&) sümboliga nende ühendamiseks.
A = "Lugu kahest linnast" B = "Nelikümmend armastuse reeglit" New_String = A + ", " + B
Või,
A = "Lugu kahest linnast" B = "Nelikümmend armastuse reeglit" New_String = A & ", " & B
Mõlemal juhul tagastavad nad aheldatud stringi.
Aga kui A on string ( "Lugu kahest linnast" ) ja B on täisarv ( 27 ), peate kasutama ampersand (&) sümbol, mida liita.
A = "A Tale of Two Cities" B = 27 New_String = A & ", " & B
See tagastab konkateeritud väljundi.
Näited stringide ja muutujate ühendamiseks Excel VBAs (makro, UDF ja UserForm)
Me oleme õppinud stringi (s) ja muutuja (s) ühendamist koos VBA Excelis. Seekord uurime mõningaid näiteid, mis hõlmavad stringi (s) ja muutuja (s) ühendamist koos VBA .
Näide 1: Makro väljatöötamine stringi (s) ja muutuja (s) ühendamiseks Excel VBAs
Me oleme õppinud stringide ja muutujate ühendamist koos VBA Seekord töötame välja Makro mitme tulba stringide ja muutujate ühendamiseks töölehel.
Siin on meil andmekogum koos raamatu nimed , autorid ja hinnad mõned raamatud raamatupoest nimega Martin Bookstore.
Töötame välja Makro veergude ühendamiseks 1, 2, ja 3 andmekogumi kohta B4:D14 lahtris F4 .
The VBA kood on:
⧭ VBA kood:
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
⧭ Väljund:
Käivita see kood. Saate 3 veerud, mis on seotud vahemikus F4:F14.
Loe edasi: Makro mitme veeru ühendamiseks Excelis (koos UDF ja UserFormiga)
Näide 2: Kasutajapoolse funktsiooni loomine stringi (s) ja muutuja (s) ühendamiseks Excel VBAs
Me oleme õppinud arendama Makro et liita mitu andmekogumi veergu. Seekord loome me ühe Kasutaja määratud funktsioon stringide või muutujate ühendamiseks Excelis.
Täielik VBA kood on:
⧭ VBA kood:
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
⧭ Väljund:
Valige veerg, kus soovite vahemikku liita, ja sisestage see valem:
=ConcatenateValues("She", "H. Rider Haggard",", ")
See naaseb Ta, H. Rider Haggard väljundina.
Sisestage taas valem:
=ConcatenateValues(B4:B14,30,", ")
[ Array valem Nii et ärge unustage vajutada CTRL + SHIFT + ENTER kui te ei ole Office 365 .]
See ühendab 30 kõigi väärtustega vahemikus B4:B14 .
Lõpuks sisestage:
=ConcatenateValues(B4:B14,C4:C14,", ")
[Jällegi Array valem Nii et ärge unustage vajutada CTRL + SHIFT + ENTER kui te ei ole Office 365 .]
See ühendab kõik väärtused vahemikus B4:B14 nendega, mis on seotud C4:C14 .
Loe lisaks: Kuidas Excelis liita (3 sobivat viisi)
Sarnased lugemised:
- Kuidas ühendada kahe või enama lahtri tekst ühte lahtrisse Excelis (5 meetodit)
- Ridade ühendamine ühte lahtrisse Excelis
- Numbrite ühendamine Excelis (4 kiirvalemit)
- Teksti ühendamine Excelis (8 sobivat viisi)
- Kuidas ketendada apostrofe Excelis (6 lihtsat viisi)
Näide 3: UserFormi arendamine stringi (s) ja muutuja (s) ühendamiseks Exceli VBAs erineval töölehel
Me oleme õppinud arendama Makro ja Kasutaja määratud funktsioon stringide ja väärtuste ühendamiseks. Lõpuks arendame välja UserForm stringide ja väärtuste ühendamiseks soovitud töölehe soovitud kohta.
⧪ 1. samm: kasutajavormi sisestamine
Minge Insert> UserForm valikust VBA tööriistariba, et sisestada uus UserForm .
⧪ 2. samm: Tööriistade lohistamine kasutajavormile
A UserForm nimega UserForm1 avatakse koos Tööriistakast nimega Kontroll .
Liigutage hiirega üle e tööriistakasti ja lohistage 2 ListBoxi, 5 tekstikasti, 7 sildi ja 1 käsunuppu UserFormi. .
Muutke näidikuid Märgised nagu on näidatud joonisel.
Samamoodi muutke ekraani CommandButton aadressile OK .
⧪ 3. samm: TextBox1 koodi kirjutamine
Topeltklõpsake nupul Tekstikast1 . A Privaatne alaprotseduur nimega TextBox1_Change avaneb. Sisestage sinna järgmine kood.
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. samm: TextBox3 koodi kirjutamine
Samuti topeltklõpsake topeltklõpsuga Tekstikast3 . teine Privaatne alamprotseduur nimega TextBox3_Change avaneb. Sisestage sinna järgmine kood.
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. samm: Tekstikasti4 koodi kirjutamine
Samuti topeltklõpsake topeltklõpsuga Tekstikast3 . teine Privaatne alamprotseduur nimega TextBox3_Change avaneb. Sisestage sinna järgmine kood.
Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub
⧪ 6. samm: ListBox2 koodi kirjutamine
Seejärel topeltklõpsake nupul ListBox2 Kui Privaatne alamprotseduur nimega ListBox2_Click avaneb, sisestage seal see kood.
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 Sub
⧪ 7. samm: CommanButton1 koodi kirjutamine
Samuti topeltklõpsake topeltklõpsuga CommandButton1 . pärast seda, kui Privaatne alaprotseduur nimega CommandButton1_Change avaneb, sisestage sinna järgmine kood.
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(Veerg_Numbers) To UBound(Veerg_Numbers) If j UBound(Veerg_Numbers) Then Output = Output & Rng.Cells(i, Int(Veerg_Numbers(j))) & Separator Else Output = Output & Rng.Cells(i, Int(Veerg_Numbers(j)) End If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message:MsgBox "Vali kõik valikud õigesti.", vbExclamation End Sub
⧪ 7. samm: Kasutajavormi käivitamise koodi kirjutamine
Nüüd on viimane samm. Sisestage uus Moodul alates VBA tööriistariba ja sisestage järgmine kood.
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.Show End Sub
⧪ 8. samm: UserFormi käivitamine
Teie UserForm on nüüd kasutusvalmis. Selle käivitamiseks valige töölehel olev andmekogum (sh. Pealkirjad ) ja käivitada Makro nimega Run_UserForm .
The UserForm laetakse kõik valikud. Valitud vahemiku aadress kuvatakse ekraanil Tekstikast1 ( B3:D4 siin). Soovi korral saate seda muuta. Töölehel valitud vahemik muutub.
Valige veerud, mida soovite konkateerida, valikust Veerud Concat'ile ListBox. Siin olen valinud Raamatu nimi ja Hind .
Sisestage Eraldaja . Siin ma olen sisestanud koma ( , ).
Valige töölehe nimi, kuhu soovite sisestada konkateeritud vahemiku alljärgnevalt Konkateeritud In listbox. Siia olen sisestanud Leht3 .
(Hetkel, mil valite lehe, aktiveeritakse see, isegi kui see ei ole aktiivne leht.)
Seejärel sisestage Väljundi asukoht See on seotud vahemiku esimese lahtri viide. Siin olen pannud B3 .
(Hetkel, mil te sisenete Väljundi asukoht , valitakse väljundvahemik).
Ja lõpuks sisestage nimi Väljundi päis (Output Range'i päis). Siia olen pannud Konkateeritud vahemik .
(Hetkel, mil te panete Väljundi päis määratakse väljundveergu päis.).
Klõpsake OK . Saate soovitud väljundi soovitud kohas.
Loe edasi: Kuidas liita string ja täisarvu VBA abil kokku, kasutades VBA-d
Kokkuvõte
Nii et need on mõned näited, mille puhul saate kasutada Excelit. VBA stringide ja muutujate ühendamiseks. Loodan, et näited tegid teile kõik üsna selgeks. Kas teil on küsimusi? Küsige julgelt. Ja ärge unustage külastada meie veebilehte ExcelWIKI rohkem postitusi ja uuendusi.