Kā sasaistīt virkni un mainīgo programmā Excel VBA (Detalizēta analīze)

  • Dalīties Ar Šo
Hugh West

Strādājot ar VBA programmā Excel mums bieži vien darba lapā ir jāsavieno virkne (s) un mainīgais (s). Virknes (s) un mainīgā (s) savietošana tiek plaši izmantota gandrīz visās nozarēs mūsu darbos, sākot no studentu rezultātu apkopošanas līdz sarežģīta uzņēmuma analīzei. Šajā rakstā es jums parādīšu, kā varat savietot virkni (s) un mainīgo (s) darblapā ar VBA Excel programmā. Es paskaidrošu šīs lietas ar atbilstošiem piemēriem un ilustrācijām.

Saskaitīt virkni (-es) un mainīgo (-os) programmā Excel VBA (ātrais skats)

Lejupielādēt Practice Workbook

Lejupielādējiet šo prakses darba burtnīcu, lai vingrinātos, kamēr lasāt šo rakstu.

Konkatenēt virkni un mainīgo.xlsm

Veiciet virknes (-u) un mainīgā (-o) konkatenāciju programmā Excel VBA (soli pa solim)

Vispirms aplūkosim, kā mēs varam savienot virkni (s) un mainīgo (s) programmā VBA soli pa solim.

⧪ virknes (-u) savienošana:

Divu vai vairāku virkņu savienošana vienkopus VBA , varat izmantot gan aritmētisko pievienošana (+) simbols un ampersands (& ) simbols.

Piemēram, lai savienotu virknes "Lielās cerības" un "Stāsts par divām pilsētām" ar komats , varat izmantot:

 New_String = "Lielās cerības" + ", " + " + "Stāsts par divām pilsētām" 

Vai,

 New_String = "Lielās cerības" & amp; ", " & amp; "A Tale of Two Cities" 

Palaidiet jebkuru no iepriekš minētajiem kodiem. Tas parādīs salikto rezultātu, Lielās cerības, Stāsts par divām pilsētām .

⧪ Konkatenējošais mainīgais (s)

Ja visi mainīgie satur virknes vērtības, tad varat izmantot gan aritmētiskās pievienošana (+) simbols un ampersands (&) simbols.

Bet, ja tā nav, varat izmantot tikai ampersands (&) simbols, ko savienot.

Piemēram, Pieņemsim, ka ir divi mainīgie, A un B .

A satur virkni, "Stāsts par divām pilsētām" , un B satur citu virkni, "Četrdesmit mīlestības noteikumi" .

Varat izmantot gan pievienošana (+) simbols un ampersands (&) simbols, lai tos apvienotu.

 A = "A Tale of Two Cities" B = "The Forty Rules of Love" New_String = A + ", " + B 

Vai,

 A = "A Tale of Two Cities" B = "The Forty Rules of Love" New_String = A & ", " & B 

Abos gadījumos tiek atgriezta saliktā virkne.

Bet, ja A ir virkne ( " Stāsts par divām pilsētām" ) un B ir vesels skaitlis ( 27 ), ir jāizmanto ampersands (&) simbols, ko savienot.

 A = "A Tale of Two Cities" B = 27 New_String = A & ", " & B 

Tas atgriezīs salikto rezultātu.

Piemēri virkņu un mainīgo savienošanai Excel VBA programmā (ietverot makro, UDF un lietotāja veidlapu)

Mēs esam iemācījušies savienot virkni (s) un mainīgo (s) ar VBA Šoreiz mēs izpētīsim dažus piemērus, kas ietver virknes (s) un mainīgā (s) savienošanu ar VBA .

1. piemērs: Makroreakcijas izveide virknes (s) un mainīgā (s) konkatenēšanai programmā Excel VBA

Mēs esam iemācījušies savienot virknes un mainīgos ar VBA . Šoreiz mēs izstrādāsim Makro lai savienotu vairāku darblapas sleju virknes un mainīgos.

Šeit mums ir datu kopa ar grāmatu nosaukumi , autori , un cenas dažas grāmatas no grāmatnīcas ar nosaukumu Martin Bookstore.

Izstrādāsim Makro savienot kolonnas 1, 2, un 3 datu kopas B4:D14 šūnā F4 .

Portāls VBA kods būs:

⧭ VBA kods:

 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 & amp; Rng.Cells(i, Int(Column_Numbers(j))))& Separators 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 

⧭ Izvades:

Palaidiet šo kodu. 3 kolonnas, kas savienotas diapazonā F4:F14.

Lasīt vairāk: Makro, lai programmā Excel saslēgtu vairākas kolonnas (ar UDF un UserForm)

2. piemērs: Lietotāja definētas funkcijas izveide, lai programmā Excel VBA saslēgtu virkni (s) un mainīgo (s)

Mēs esam iemācījušies attīstīt Makro lai apvienotu vairākas datu kopas kolonnas. Šoreiz mēs izveidosim Lietotāja definēta funkcija lai programmā Excel savienotu virknes vai mainīgos.

Pilnīga VBA kods būs:

⧭ VBA kods:

 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 

⧭ Izvades:

Atlasiet kolonnu, kurā vēlaties savienot diapazonu, un ievadiet šo formulu:

=ConcatenateValues("Viņa", "H. Rider Haggard",", ")

Tas atgriezīsies Viņa, H. Rider Haggard kā izejas signālu.

Atkal ievadiet formulu:

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

[ Masuļa formula . Tāpēc neaizmirstiet nospiest CTRL + SHIFT + ENTER ja vien neesat Office 365 .]

Tas apvienos 30 ar visām diapazona vērtībām. B4:B14 .

Visbeidzot ievadiet:

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

[Atkal Masuļa formula . Tāpēc neaizmirstiet nospiest CTRL + SHIFT + ENTER ja vien neesat Office 365 .]

Tas apvienos visas diapazona vērtības. B4:B14 ar tiem, kas attiecas uz C4:C14 .

Lasiet vairāk: Kā veikt konkatenāciju programmā Excel (3 piemēroti veidi)

Līdzīgi lasījumi:

  • Kā apvienot divu vai vairāku šūnu tekstu vienā šūnā programmā Excel (5 metodes)
  • Rindu apvienošana vienā šūnā programmā Excel
  • Saskaitīt skaitļus programmā Excel (4 ātrās formulas)
  • Teksta apvienošana programmā Excel (8 piemēroti veidi)
  • Kā programmā Excel saslēgt apostrofu (6 vienkārši veidi)

3. piemērs: Lietotāja veidlapas izveide, lai savietotu virkni (s) un mainīgo (s) citā darblapā programmā Excel VBA

Mēs esam iemācījušies attīstīt Makro un Lietotāja definēta funkcija lai savienotu virknes un vērtības. Visbeidzot, mēs izstrādāsim Lietotāja veidlapa savienot virknes un vērtības vēlamajā darblapas vietā.

⧪ 1. solis: Lietotāja veidlapas ievietošana

Dodieties uz Insert> Lietotāja veidlapa opcija VBA rīkjoslu, lai ievietotu jaunu Lietotāja veidlapa .

⧪ 2. solis: rīku vilkšana uz lietotāja veidlapu

A Lietotāja veidlapa ko sauc par Lietotāja veidlapa1 tiks atvērts kopā ar Toolbox ko sauc par Vadība .

Pārvietojiet peli virs e Toolbox un velciet 2 ListBoxes, 5 TextBoxes, 7 etiķetes un 1 CommanButtons uz UserForm. .

Mainīt displejus Etiķetes kā parādīts attēlā.

Līdzīgi mainiet displeja CommandButton uz LABI .

⧪ 3. solis: teksta loga TextBox1 koda rakstīšana

Divreiz noklikšķiniet uz TextBox1 . A Privāta apakšprocedūra ko sauc par TextBox1_Change Atvērsies programma. Tajā ievadiet šādu kodu.

 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. solis: teksta loga TextBox3 koda rakstīšana

Tāpat divreiz noklikšķiniet uz TextBox3 . cits Privāta apakšprocedūra ko sauc par TextBox3_Change Atvērsies programma. Tajā ievadiet šādu kodu.

 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. solis: teksta loga TextBox4 koda rakstīšana

Tāpat divreiz noklikšķiniet uz TextBox3 . cits Privāta apakšprocedūra ko sauc par TextBox3_Change Atvērsies programma. Tajā ievadiet šādu kodu.

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

⧪ 6. solis: ListBox2 koda rakstīšana

Pēc tam divreiz noklikšķiniet uz ListBox2 . Kad Privāta apakšprocedūra ko sauc par ListBox2_Click atveras, tur ievadiet šo kodu.

 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 

⧪ 7. solis: CommanButton1 koda rakstīšana

Tāpat divreiz noklikšķiniet uz CommandButton1 . Pēc tam, kad Privāta apakšprocedūra ko sauc par CommandButton1_Change atveras, tajā ievietojiet šādu kodu.

 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 "Izvēlieties visas opcijas pareizi.", vbExclamation End Sub 

⧪ 7. solis: lietotāja veidlapas palaišanas koda rakstīšana

Tagad ir pēdējais solis. Ievietojiet jaunu Modulis no VBA rīkjoslu un ievietojiet šādu kodu.

 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. solis: Lietotāja veidlapas palaišana

Jūsu Lietotāja veidlapa tagad ir gatavs lietošanai. Lai to palaistu, atlasiet datu kopu no darblapas (ieskaitot Virsraksti ) un palaidiet Makro ko sauc par Run_UserForm .

Portāls Lietotāja veidlapa tiks ielādētas visas opcijas. Izvēlētā diapazona adrese tiks parādīta uz TextBox1 ( B3:D4 Ja vēlaties, varat to mainīt. Izvēlētais diapazons darblapā mainīsies.

Atlasiet kolonnas, kuras vēlaties savienot, no Konkrustējamās kolonnas ListBox. Šeit esmu izvēlējies Grāmatas nosaukums un Cena .

Ievadiet Separators . Šeit es esmu ievadījis komats ( , ).

Izvēlieties darblapas nosaukumu, kurā vēlaties ievietot konkatenēto diapazonu no Konkatenēti In listbox. Šeit es esmu ievadījis Lapa3 .

(Tiklīdz atlasīsiet lapu, tā tiks aktivizēta, pat ja tā nav aktīvā lapa.)

Pēc tam ievietojiet Izvades atrašanās vieta Tā ir atsauce uz apvienotā diapazona pirmās šūnas šūnu. Šeit es ieliku. B3 .

(Brīdī, kad ievadāt Izvades atrašanās vieta , tiks izvēlēts izejas diapazons).

Un visbeidzot ievadiet Izvades galvene (Izvades diapazona galvene). Šeit es esmu ielicis Konkatenētais diapazons .

(Brīdī, kad ievietojat Izvades galvene , tiks iestatīta izejas kolonnas galvene.)

Noklikšķiniet uz LABI . Iegūsiet vēlamo rezultātu vēlamajā vietā.

Lasīt vairāk: Kā savienot virkni un veselu skaitli, izmantojot VBA

Secinājums

Šie ir daži piemēri, kuros varat izmantot Excel. VBA lai savienotu virknes un mainīgos. Ceru, ka piemēri jums ir skaidri. Vai jums ir kādi jautājumi? Uzdodiet tos mums. Un neaizmirstiet apmeklēt mūsu vietni. ExcelWIKI vairāk ziņu un atjauninājumu.

Hjū Vests ir ļoti pieredzējis Excel treneris un analītiķis ar vairāk nekā 10 gadu pieredzi šajā nozarē. Viņam ir bakalaura grāds grāmatvedībā un finansēs un maģistra grāds uzņēmējdarbības vadībā. Hjū aizraujas ar mācīšanu, un viņš ir izstrādājis unikālu mācīšanas pieeju, kas ir viegli izpildāma un saprotama. Viņa ekspertu zināšanas programmā Excel ir palīdzējušas tūkstošiem studentu un profesionāļu visā pasaulē uzlabot savas prasmes un izcelties karjerā. Izmantojot savu emuāru, Hjū dalās savās zināšanās ar pasauli, piedāvājot bezmaksas Excel apmācības un tiešsaistes apmācību, lai palīdzētu personām un uzņēmumiem pilnībā izmantot savu potenciālu.