Kuinka ketjuttaa merkkijono ja muuttuja Excel VBA: ssa (yksityiskohtainen analyysi)

  • Jaa Tämä
Hugh West

Työskennellessään VBA Excelissä joudumme usein yhdistämään merkkijonon (s) ja muuttujan (s) työarkissa. Merkkijonon (s) ja muuttujan (s) yhdistämistä käytetään laajalti lähes kaikilla työmme sektoreilla, alkaen opiskelijoiden tulosten tiivistämisestä monimutkaisen liiketoiminnan analysointiin. Tässä artikkelissa näytän sinulle, miten voit yhdistää merkkijonon (s) ja muuttujan (s) työarkissa käyttämällä apuna VBA Excelissä. Selitän asiat oikeilla esimerkeillä ja kuvilla.

Merkkijonon (s) ja muuttujan (s) yhdistäminen Excel VBA:ssa (Pikakatselu)

Lataa harjoituskirja

Lataa tämä harjoituskirja, jotta voit harjoitella tätä artikkelia lukiessasi.

Merkkijonon ja muuttujan ketjuttaminen.xlsm

Yhdistä merkkijono (s) ja muuttuja (s) Excel VBA: ssa (vaiheittainen analyysi)

Katsotaanpa ensin, miten voimme yhdistää merkkijonon (s) ja muuttujan (s) muodossa VBA askel askeleelta.

⧪ Merkkijonon (s) ketjuttaminen:

Kahden tai useamman merkkijonon ketjuttaminen osoitteessa VBA , voit käyttää sekä aritmeettista että aritmeettista lisäys (+) symboli ja Amperand (& ) symboli.

Esimerkiksi ketjutetaan merkkijonot "Suuria odotuksia" ja "Kahden kaupungin tarina" a:lla pilkku , voit käyttää:

 New_String = "Suuria odotuksia" + ", " + "Kahden kaupungin tarina" 

Tai,

 New_String = "Suuria odotuksia" & ", " & "Kahden kaupungin tarina" 

Suorita mikä tahansa yllä olevista koodeista. Se näyttää yhdistetyn tulosteen, Suuret odotukset, Kahden kaupungin tarina .

⧪ Yhdistävä muuttuja (s)

Jos kaikki muuttujat sisältävät merkkijonoarvoja, voit käyttää sekä aritmeettista lisäys (+) symboli ja Amperand (&) symboli.

Mutta jos näin ei ole, voit käyttää vain komentoa Amperand (&) symboli, joka yhdistetään.

Esimerkiksi: Meillä on kaksi muuttujaa, A ja B .

A sisältää merkkijonon, "Kahden kaupungin tarina" ja B sisältää toisen merkkijonon, "Rakkauden neljäkymmentä sääntöä" .

Voit käyttää sekä lisäys (+) symboli ja Amperand (&) symboli niiden yhdistämiseksi.

 A = "Kahden kaupungin tarina" B = "Rakkauden neljäkymmentä sääntöä" New_String = A + ", " + B 

Tai,

 A = "Kahden kaupungin tarina" B = "Rakkauden neljäkymmentä sääntöä" New_String = A & ", " & B 

Molemmissa tapauksissa ne palauttavat ketjutetun merkkijonon.

Mutta jos A on merkkijono ( "Kahden kaupungin tarina" ) ja B on kokonaisluku ( 27 ), sinun on käytettävä Amperand (&) symboli, joka yhdistetään.

 A = "Kahden kaupungin tarina" B = 27 New_String = A & ", " & B 

Se palauttaa ketjutetun tuloksen.

Esimerkkejä merkkijonojen ja muuttujien yhdistämisestä Excel VBA: ssa (mukana makro, UDF ja UserForm)

Olemme oppineet ketjuttamaan merkkijonon (s) ja muuttujan (s) komennolla VBA Excelissä. Tällä kertaa tarkastelemme joitakin esimerkkejä, joissa merkkijonon (s) ja muuttujan (s) yhdistäminen on mahdollista käyttämällä VBA .

Esimerkki 1: Makron kehittäminen merkkijonon (s) ja muuttujan (s) ketjuttamiseen Excel VBA:ssa

Olemme oppineet ketjuttamaan merkkijonoja ja muuttujia komennolla VBA Tällä kertaa kehitämme Makro yhdistää työarkin useiden sarakkeiden merkkijonoja ja muuttujia.

Tässä meillä on datajoukko, jossa on kirjan nimet , kirjoittajat ja hinnat Martin Bookstore -nimisen kirjakaupan kirjoista.

Kehitetään Makro sarakkeiden yhdistämiseen 1, 2, ja 3 tietokokonaisuudesta B4:D14 solussa F4 .

The VBA koodi on:

⧭ VBA-koodi:

 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_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 Range(Output_Cell).Cells(i, 1) = Output Next i End Sub 

⧭ Lähtö:

Suorita tämä koodi. Saat 3 sarakkeet yhdistettyinä välillä F4:F14.

Lue lisää: Makro useiden sarakkeiden yhdistämiseen Excelissä (UDF ja UserForm)

Esimerkki 2: Käyttäjän määrittelemän funktion luominen merkkijonon (s) ja muuttujan (s) ketjuttamiseen Excel VBA:ssa

Olemme oppineet kehittämään Makro yhdistämään useita sarakkeita datajoukosta. Tällä kertaa luomme sarakkeen nimeltä Käyttäjän määrittelemä toiminto ketjuttaa merkkijonoja tai muuttujia Excelissä.

Täydellinen VBA koodi on:

⧭ VBA-koodi:

 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 

⧭ Lähtö:

Valitse sarake, johon haluat yhdistää alueen, ja kirjoita tämä kaava:

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

Se palaa Hän, H. Rider Haggard ulostulona.

Syötä jälleen kaava:

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

[ Array kaava Älä siis unohda painaa CTRL + SHIFT + ENTER ellet ole Office 365 .]

Se ketjuttaa arvon 30 kaikkien arvojen kanssa alueella B4:B14 .

Kirjoita lopuksi:

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

[Jälleen Array kaava Älä siis unohda painaa CTRL + SHIFT + ENTER ellet ole Office 365 .]

Se ketjuttaa kaikki alueen arvot. B4:B14 ja C4:C14 .

Lue lisää: Kuinka ketjuttaa Excelissä (3 sopivaa tapaa)

Samanlaisia lukemia:

  • Tekstin yhdistäminen kahdesta tai useammasta solusta yhteen soluun Excelissä (5 menetelmää)
  • Rivien yhdistäminen yhdeksi soluksi Excelissä
  • Numeroiden yhdistäminen Excelissä (4 nopeaa kaavaa)
  • Tekstin yhdistäminen Excelissä (8 sopivaa tapaa)
  • Miten ketjuttaa apostrofeja Excelissä (6 helppoa tapaa)

Esimerkki 3: UserForm-lomakkeen kehittäminen merkkijonon (s) ja muuttujan (s) yhdistämiseksi eri laskentataulukkoon Excel VBA:ssa.

Olemme oppineet kehittämään Makro ja Käyttäjän määrittelemä toiminto merkkijonojen ja arvojen ketjuttamiseen. Lopuksi kehitämme vielä UserForm ketjuttaa merkkijonoja ja arvoja halutun työarkin haluttuun paikkaan.

⧪ Vaihe 1: Käyttäjälomakkeen lisääminen

Mene osoitteeseen Insert> UserForm vaihtoehto VBA työkalupalkissa lisätä uuden UserForm .

⧪ Vaihe 2: Työkalujen vetäminen UserFormiin

A UserForm nimeltään UserForm1 avataan yhdessä Työkalupakki nimeltään Valvonta .

Siirrä hiiri hiiren e Toolbox ja vedä 2 ListBoxia, 5 Tekstilaatikkoa, 7 Tarraa ja1 Komentopainiketta UserFormiin. .

Vaihda näytöt Tarrat kuten kuvassa on esitetty.

Vastaavasti vaihda näyttöä CommandButton osoitteeseen OK .

⧪ Vaihe 3: Koodin kirjoittaminen TextBox1:lle

Kaksoisnapsauta Tekstilaatikko1 . A Yksityinen aliproseduuri nimeltään TextBox1_Change avautuu. Kirjoita sinne seuraava koodi.

 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 

⧪ Vaihe 4: Koodin kirjoittaminen TextBox3:lle

Vastaavasti kaksoisnapsauta Tekstilaatikko3 . toinen Yksityinen aliproseduuri nimeltään TextBox3_Change avautuu. Kirjoita sinne seuraava koodi.

 Private Sub TextBox3_Change() On Error GoTo Task Starting_Cell = UserForm1.TextBox3.Text For i = 1 To Len(Starting_Cell) If Asc(Mid(Mid(Starting_Cell, i, 1)))>= 48 And Asc(Mid(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 

⧪ Vaihe 5: Koodin kirjoittaminen TextBox4:lle

Kaksoisnapsauta myös Tekstilaatikko3 . toinen Yksityinen aliproseduuri nimeltään TextBox3_Change avautuu. Kirjoita sinne seuraava koodi.

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

⧪ Vaihe 6: ListBox2:n koodin kirjoittaminen

Kaksoisnapsauta sitten ListBox2 . Kun Yksityinen aliproseduuri nimeltään ListBox2_Click avautuu, syötä tämä koodi sinne.

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

⧪ Vaihe 7: CommanButton1:n koodin kirjoittaminen

Kaksoisnapsauta myös CommandButton1 . Sen jälkeen kun Yksityinen aliproseduuri nimeltään CommandButton1_Change aukeaa, lisää seuraava koodi sinne.

 Private Sub CommandButton1_Click() On Error GoTo Message Dim Rng As Range Set Rng = Worksheets(UserForm1.TextBox5.Text).Range(UserForm1.TextBox1.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 Säilytä sarakkeen_luvut(Count) Sarakkeen_luvut(Count)(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 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 Seuraava j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message:MsgBox "Valitse kaikki vaihtoehdot oikein.", vbExclamation End Sub 

⧪ Vaihe 7: Koodin kirjoittaminen käyttäjälomakkeen suorittamiseksi

Nyt on viimeinen vaihe. Aseta uusi Moduuli alkaen VBA työkaluriville ja lisää seuraava koodi.

 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 

⧪ Vaihe 8: Käyttäjälomakkeen suorittaminen

Sinun UserForm on nyt valmis käytettäväksi. Käyttääksesi sitä, valitse datajoukko laskentataulukosta (Mukaan lukien kenttä Otsikot ) ja suorita Makro nimeltään Run_UserForm .

The UserForm latautuu kaikkine vaihtoehdoineen. Valitun alueen osoite näytetään kohdassa Tekstilaatikko1 ( B3:D4 tässä). Voit halutessasi muuttaa sitä. Taulukon valittu alue muuttuu.

Valitse sarakkeet, jotka haluat yhdistää sarakkeisiin, valikosta Yhdistettävät sarakkeet ListBox. Tässä olen valinnut Kirjan nimi ja Hinta .

Kirjoita Erotin . Tässä olen syöttänyt pilkku ( , ).

Valitse työarkin nimi, johon haluat laittaa ketjutetun alueen, valikosta Ketjutettu In listbox. Tähän olen syöttänyt Sheet3 .

(Kun valitset arkin, se aktivoituu, vaikka se ei olisikaan aktiivinen.)

Aseta sitten Lähtö Sijainti Se on ketjutetun alueen ensimmäisen solun soluviittaus. Tähän olen laittanut seuraavaan kohtaan B3 .

(Heti kun astut sisään Lähtö Sijainti , lähtöalue valitaan).

Ja lopuksi kirjoita nimi Lähtöotsikko (Output Range -alueen otsikko). Tähän olen laittanut Ketjutettu alue .

(Heti kun laitat Lähtöotsikko , tulostussarakkeen otsikko asetetaan.).

Klikkaa OK Saat halutun tuloksen haluttuun paikkaan.

Lue lisää: Merkkijonon ja kokonaisluvun ketjuttaminen VBA:n avulla

Päätelmä

Tässä on siis muutamia esimerkkejä, joissa voit käyttää Exceliä. VBA merkkijonojen ja muuttujien ketjuttamiseen. Toivottavasti esimerkit tekivät kaiken melko selväksi sinulle. Onko sinulla kysyttävää? Kysy meiltä rohkeasti. Äläkä unohda vierailla sivustollamme osoitteessa ExcelWIKI lisää viestejä ja päivityksiä.

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.