Ako spojiť reťazec a premennú v programe Excel VBA (podrobná analýza)

  • Zdieľajte To
Hugh West

Pri práci s VBA v programe Excel musíme často v pracovnom hárku spájať reťazec (s) a premennú (s). Spájanie reťazca (s) a premennej (s) sa v našich prácach široko používa takmer vo všetkých odvetviach, počnúc sumarizáciou výsledkov študentov až po analýzu zložitého podniku. V tomto článku vám ukážem, ako môžete v pracovnom hárku spájať reťazec (s) a premennú (s) pomocou VBA v programe Excel. Vysvetlím vám to na vhodných príkladoch a ilustráciách.

Zlučovanie reťazca (reťazcov) a premennej (premenných) v programe Excel VBA (rýchle zobrazenie)

Stiahnite si cvičebnicu

Stiahnite si tento cvičebný zošit, aby ste si počas čítania tohto článku precvičili svoje zručnosti.

Konkatenácia reťazca a premennej.xlsm

Zlučovanie reťazca (ov) a premennej (ov) v programe Excel VBA (analýza krok za krokom)

Najskôr sa pozrime, ako môžeme spojiť reťazec (s) a premennú (s) v VBA krok za krokom.

⧪ Konkatenačný reťazec (s):

Spojenie dvoch alebo viacerých reťazcov v VBA , môžete použiť aritmetický sčítanie (+) symbol a ampersand (& ) symbol.

Napríklad na spojenie reťazcov "Veľké očakávania" a "Príbeh dvoch miest" s čiarka , môžete použiť:

 New_String = "Veľké očakávania" + ", " + "Príbeh dvoch miest" 

Alebo,

 New_String = "Veľké očakávania" & ", " & "Príbeh dvoch miest" 

Spustite ktorýkoľvek z uvedených kódov. Zobrazí sa spojený výstup, Veľké očakávania, Príbeh dvoch miest .

⧪ Konkatenačná premenná (s)

Ak všetky premenné obsahujú reťazcové hodnoty, môžete použiť aritmetické sčítanie (+) symbol a ampersand (&) symbol.

Ak však nie, môžete použiť iba ampersand (&) symbol na spojenie.

Majme napríklad dve premenné, A a B .

A obsahuje reťazec, "Príbeh dvoch miest" a B obsahuje iný reťazec, "Štyridsať pravidiel lásky" .

Môžete použiť aj sčítanie (+) symbol a ampersand (&) symbol na ich spojenie.

 A = "Príbeh dvoch miest" B = "Štyridsať pravidiel lásky" New_String = A + ", " + B 

Alebo,

 A = "Príbeh dvoch miest" B = "Štyridsať pravidiel lásky" New_String = A & ", " & B 

V oboch prípadoch vrátia spojený reťazec.

Ale ak A je reťazec ( " Príbeh dvoch miest" ) a B je celé číslo ( 27 ), musíte použiť ampersand (&) symbol na spojenie.

 A = "Príbeh dvoch miest" B = 27 New_String = A & ", " & B 

Vráti spojený výstup.

Príklady na spájanie reťazcov a premenných v programe Excel VBA (zahŕňajúce makro, UDF a užívateľský formulár)

Naučili sme sa spájať reťazec (s) a premennú (s) pomocou VBA v Exceli. Tentoraz preskúmame niekoľko príkladov zahŕňajúcich spájanie reťazca (s) a premennej (s) pomocou VBA .

Príklad 1: Vývoj makra na spojenie reťazca (s) a premennej (s) v programe Excel VBA

Naučili sme sa spájať reťazce a premenné pomocou VBA . Tentoraz vytvoríme Makro na spájanie reťazcov a premenných viacerých stĺpcov v pracovnom hárku.

Tu máme súbor údajov s názvy kníh , autori a ceny niektorých kníh z kníhkupectva s názvom Martin Bookstore.

Vytvorme Makro na spájanie stĺpcov 1, 2, a 3 súboru údajov B4:D14 v bunke F4 .

Stránka VBA kód bude:

⧭ Kód 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 

⧭ Výstup:

Spustite tento kód. 3 stĺpce spojené v rozsahu F4:F14.

Čítajte viac: Makro na spájanie viacerých stĺpcov v programe Excel (s UDF a UserForm)

Príklad 2: Vytvorenie funkcie definovanej používateľom na spojenie reťazca (s) a premennej (s) v programe Excel VBA

Naučili sme sa rozvíjať Makro na spojenie viacerých stĺpcov súboru údajov. Tentoraz vytvoríme Funkcia definovaná používateľom na spájanie reťazcov alebo premenných v programe Excel.

Kompletný VBA kód bude:

⧭ Kód VBA:

 Funkcia 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ýstup:

Vyberte stĺpec, v ktorom chcete spojiť rozsah, a zadajte tento vzorec:

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

Vráti sa Ona, H. Rider Haggard ako výstup.

Opäť zadajte vzorec:

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

[ Vzorec poľa Nezabudnite stlačiť CTRL + SHIFT + ENTER pokiaľ nie ste v Office 365 .]

Spojí 30 so všetkými hodnotami rozsahu B4:B14 .

Nakoniec zadajte:

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

[Opäť Vzorec poľa Nezabudnite stlačiť CTRL + SHIFT + ENTER pokiaľ nie ste v Office 365 .]

Spojí všetky hodnoty rozsahu B4:B14 s tými C4:C14 .

Prečítajte si viac: Ako spájať v programe Excel (3 vhodné spôsoby)

Podobné čítanie:

  • Ako spojiť text z dvoch alebo viacerých buniek do jednej bunky v programe Excel (5 metód)
  • Kombinácia riadkov do jednej bunky v programe Excel
  • Zlučovanie čísel v programe Excel (4 rýchle vzorce)
  • Kombinovanie textu v programe Excel (8 vhodných spôsobov)
  • Ako spojiť apostrof v programe Excel (6 jednoduchých spôsobov)

Príklad 3: Vytvorenie používateľského formulára na spojenie reťazca (ov) a premennej (ov) v inom pracovnom hárku v programe Excel VBA

Naučili sme sa rozvíjať Makro a Funkcia definovaná používateľom na spájanie reťazcov a hodnôt. Nakoniec vytvoríme Používateľský formulár na spojenie reťazcov a hodnôt do požadovaného miesta požadovaného pracovného hárka.

⧪ Krok 1: Vloženie používateľského formulára

Prejdite na Insert> UserForm možnosť v VBA na paneli nástrojov na vloženie nového Používateľský formulár .

⧪ Krok 2: Presunutie nástrojov do užívateľského formulára

A Používateľský formulár s názvom Používateľský formulár1 sa otvorí spolu s Toolbox s názvom Kontrola .

Presuňte myš nad e Toolbox a pretiahnite 2 ListBoxy, 5 TextBoxov, 7 štítkov a1 CommanButtons do UserForm .

Zmena zobrazenia Štítky ako je znázornené na obrázku.

Podobne zmeňte zobrazenie CommandButton na OK .

⧪ Krok 3: Napísanie kódu pre okno TextBox1

Dvakrát kliknite na TextBox1 . A Súkromná podprocedúra s názvom TextBox1_Change Otvorí sa. Zadajte tam nasledujúci kód.

 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 

⧪ Krok 4: Písanie kódu pre textové okno TextBox3

Podobne dvakrát kliknite na TextBox3 . Súkromná podprocedúra s názvom TextBox3_Change Otvorí sa. Zadajte tam nasledujúci kód.

 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 

⧪ Krok 5: Písanie kódu pre textové okno4

Dvakrát kliknite aj na TextBox3 ... Súkromná podprocedúra s názvom TextBox3_Change Otvorí sa. Zadajte tam nasledujúci kód.

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

⧪ Krok 6: Písanie kódu pre ListBox2

Potom dvakrát kliknite na ListBox2 . Keď sa Súkromná podprocedúra s názvom ListBox2_Click otvorí, zadajte tento kód.

 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 

⧪ Krok 7: Písanie kódu pre CommanButton1

Dvakrát kliknite aj na CommandButton1 . Po Súkromná podprocedúra s názvom CommandButton1_Change vložte nasledujúci kód.

 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 "Vyberte všetky možnosti správne.", vbExclamation End Sub 

⧪ Krok 7: Napísanie kódu na spustenie užívateľského formulára

Teraz je na rade posledný krok. Vložte nový Modul z VBA a vložte nasledujúci kód.

 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 

⧪ Krok 8: Spustenie používateľského formulára

Vaša stránka Používateľský formulár je teraz pripravený na použitie. Ak ho chcete spustiť, vyberte súbor údajov z pracovného hárka (vrátane Hlavičky ) a spustite Makro s názvom Run_UserForm .

Stránka Používateľský formulár sa načítajú všetky možnosti. Vybraná adresa rozsahu sa zobrazí na TextBox1 ( B3:D4 tu). Ak chcete, môžete ho zmeniť. Zvolený rozsah v pracovnom hárku sa zmení.

Vyberte stĺpce, ktoré chcete spojiť z Stĺpce na konkatáciu ListBox. Tu som vybral Názov knihy a Cena .

Zadajte Oddeľovač . Tu som zadal čiarka ( , ).

Vyberte názov pracovného hárka, do ktorého chcete umiestniť spojený rozsah z Konkatenované v zoznambox. Tu som zadal List3 .

(V okamihu, keď vyberiete list, bude aktivovaný, aj keď nie je aktívny.)

Potom vložte Výstupné umiestnenie Je to odkaz na prvú bunku spojeného rozsahu. Tu som vložil B3 .

(V okamihu, keď vstúpite do Výstupné umiestnenie , vyberie sa rozsah výstupu).

A nakoniec zadajte názov Výstupné záhlavie (Záhlavie výstupného rozsahu). Tu som vložil Konkatenovaný rozsah .

(V okamihu, keď vložíte Výstupné záhlavie , nastaví sa hlavička výstupného stĺpca.)

Kliknite na . OK . Získate požadovaný výstup na požadovanom mieste.

Čítajte viac: Ako spojiť reťazec a celé číslo pomocou VBA

Záver

Toto je niekoľko príkladov, v ktorých môžete použiť aplikáciu Excel VBA na spájanie reťazcov a premenných. Dúfam, že príklady vám všetko objasnili. Máte nejaké otázky? Neváhajte sa nás opýtať. A nezabudnite navštíviť našu stránku ExcelWIKI pre ďalšie príspevky a aktualizácie.

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.