Obsah
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.xlsmZluč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.