Kaip "Excel VBA" programoje sujungti eilutę ir kintamąjį (išsami analizė)

  • Pasidalinti
Hugh West

Dirbant su VBA "Excel" programoje dažnai tenka darbo lape sujungti eilutę (-es) ir kintamąjį (-ius). Eilutės (-ių) ir kintamojo (-ių) sujungimas plačiai naudojamas beveik visuose mūsų darbų sektoriuose, pradedant mokinių rezultatų apibendrinimu ir baigiant sudėtingo verslo analize. Šiame straipsnyje parodysiu, kaip galite sujungti eilutę (-es) ir kintamąjį (-ius) darbo lape su VBA "Excel" programoje. Paaiškinsiu dalykus, pateikdamas tinkamus pavyzdžius ir iliustracijas.

Susieti eilutę (-es) ir kintamąjį (-ius) "Excel VBA" (greitasis vaizdas)

Atsisiųsti praktikos sąsiuvinį

Atsisiųskite šį pratybų sąsiuvinį ir atlikite pratimus, kol skaitysite šį straipsnį.

Susieti eilutę ir kintamąjį.xlsm

Susieti eilutę (-es) ir kintamąjį (-ius) "Excel VBA" (žingsnis po žingsnio analizė)

Pirmiausia pažiūrėkime, kaip galime sujungti eilutę (s) ir kintamąjį (s) į VBA žingsnis po žingsnio.

⧪ Suderinti eilutę (-es):

Dviejų ar daugiau eilučių sujungimas VBA , galite naudoti ir aritmetinį papildymas (+) simbolis ir ampersandas (& ) simbolis.

Pavyzdžiui, norėdami sujungti eilutes "Didieji lūkesčiai" ir "Pasaka apie du miestus" su kablelis , galite naudoti:

 New_String = "Didieji lūkesčiai" + ", " + " "Dviejų miestų pasaka" 

Arba,

 New_String = "Didieji lūkesčiai" & ", " & "Pasaka apie du miestus" 

Paleiskite bet kurį iš pirmiau pateiktų kodų. Bus rodomas sujungtas išvesties rezultatas, "Didieji lūkesčiai", "Pasaka apie du miestus .

⧪ Suderinamasis kintamasis (-ieji)

Jei visuose kintamuosiuose yra eilučių reikšmės, galite naudoti ir aritmetinę papildymas (+) simbolis ir ampersandas (&) simbolis.

Tačiau jei taip nėra, galite naudoti tik ampersandas (&) simbolis, kurį reikia sujungti.

Pavyzdžiui, Turime du kintamuosius, A ir B .

A yra eilutė, "Pasaka apie du miestus" , ir B yra kita eilutė, "Keturiasdešimt meilės taisyklių" .

Galite naudoti ir papildymas (+) simbolis ir ampersandas (&) simbolį, kad juos sujungtumėte.

 A = "Pasaka apie du miestus" B = "Keturiasdešimt meilės taisyklių" New_String = A + ", " + B 

Arba,

 A = "Pasaka apie du miestus" B = "Keturiasdešimt meilės taisyklių" New_String = A & ", " & B 

Abiem atvejais bus grąžinama suglausta eilutė.

Bet jei A yra eilutė ( " "Pasaka apie du miestus" ) ir B yra sveikasis skaičius ( 27 ), turite naudoti ampersandas (&) simbolis, kurį reikia sujungti.

 A = "Pasaka apie du miestus" B = 27 New_String = A & ", " & B 

Jis grąžins sugretintą išvestį.

Eilučių ir kintamųjų sujungimo pavyzdžiai "Excel VBA" programoje (įskaitant makrokomandas, UDF ir naudotojo formą)

Išmokome sujungti eilutę (s) ir kintamąjį (s) su VBA Šį kartą nagrinėsime keletą pavyzdžių, susijusių su eilutės (s) ir kintamojo (s) sujungimu su VBA .

1 pavyzdys: Makrokomandos, skirtos eilutei (-ėms) ir kintamajam (-iams) sutraukti, kūrimas "Excel VBA" programoje

Išmokome sujungti eilutes ir kintamuosius naudodami VBA . Šį kartą sukursime Makro sujungti kelių darbalapio stulpelių eilutes ir kintamuosius.

Čia turime duomenų rinkinį su knygų pavadinimai , autoriai , ir kainos kai kurių knygų iš knygyno, vadinamo Martino knygynu.

Sukurkime Makro sujungti stulpelius 1, 2, ir 3 duomenų rinkinio B4:D14 ląstelėje F4 .

Svetainė VBA kodas bus:

⧭ VBA kodas:

 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 

⧭ Išėjimas:

Paleiskite šį kodą. Gausite 3 stulpelių, sujungtų į intervalą F4:F14.

Skaityti daugiau: Makrokomanda, skirta keliems stulpeliams "Excel" programoje sujungti (su UDF ir vartotojo forma)

2 pavyzdys. 2 pavyzdys: Vartotojo apibrėžtos funkcijos, skirtos eilutei (s) ir kintamajam (s) sujungti, sukūrimas "Excel VBA" programoje

Išmokome sukurti Makro sujungti kelis duomenų rinkinio stulpelius. Šį kartą sukursime Vartotojo apibrėžta funkcija sujungti eilutes arba kintamuosius "Excel" programoje.

Visas VBA kodas bus:

⧭ VBA kodas:

 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 

⧭ Išėjimas:

Pasirinkite stulpelį, kuriame norite sujungti intervalą, ir įveskite šią formulę:

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

Jis grįš Ji, H. Rider Haggard kaip išvestį.

Vėl įveskite formulę:

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

[ Masyvo formulė . Taigi nepamirškite paspausti CTRL + SHIFT + ENTER nebent esate "Office 365 .]

30 bus sujungta su visomis diapazono reikšmėmis B4:B14 .

Galiausiai įveskite:

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

[Vėl Masyvo formulė . Taigi nepamirškite paspausti CTRL + SHIFT + ENTER nebent esate "Office 365 .]

Bus sujungtos visos diapazono reikšmės B4:B14 su C4:C14 .

Skaitykite daugiau: Kaip "Excel" programoje sutraukti (3 tinkami būdai)

Panašūs skaitiniai:

  • Kaip "Excel" programoje sujungti dviejų ar daugiau ląstelių tekstą į vieną ląstelę (5 metodai)
  • "Excel" eilučių sujungimas į vieną ląstelę
  • Sujungti skaičius "Excel" programoje (4 greitos formulės)
  • Teksto derinimas programoje "Excel" (8 tinkami būdai)
  • Kaip "Excel" programoje sutraukti apostrofą (6 paprasti būdai)

3 pavyzdys: Vartotojo formos sukūrimas eilutei (-ėms) ir kintamajam (-iams) sujungti kitame darbalapyje naudojant "Excel VBA

Išmokome sukurti Makro ir Vartotojo apibrėžta funkcija sujungti eilutes ir reikšmes. Galiausiai sukursime Naudotojo forma sujungti eilutes ir reikšmes į norimą darbalapio vietą.

⧪ 1 žingsnis: naudotojo formos įterpimas

Eikite į Insert> UserForm parinktį VBA įrankių juostoje įterpti naują Naudotojo forma .

⧪ 2 veiksmas: įrankių vilkimas į naudotojo formą

A Naudotojo forma vadinamas . Naudotojo forma1 bus atidaryta ir Įrankių dėžutė vadinamas . Valdymas .

Perkelkite pelę virš e Toolbox ir vilkite 2 ListBoxes, 5 TextBoxes, 7 Labels ir1 CommanButtons į UserForm .

Pakeiskite rodmenis Etiketės kaip parodyta paveikslėlyje.

Panašiai pakeiskite ir CommandButton į GERAI .

⧪ 3 žingsnis: TextBox1 kodo rašymas

Dukart spustelėkite TextBox1 . A Privati paprocedūra vadinamas . TextBox1_Change Atsidarys langas. Jame įveskite šį kodą.

 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 žingsnis: TextBox3 kodo rašymas

Panašiai dukart spustelėkite TextBox3 . Privati paprocedūra vadinamas . TextBox3_Change Atsidarys langas. Jame įveskite šį kodą.

 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 veiksmas: "TextBox4" kodo rašymas

Taip pat dukart spustelėkite TextBox3 . Privati paprocedūra vadinamas . TextBox3_Change Atsidarys langas. Jame įveskite šį kodą.

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

⧪ 6 žingsnis: "ListBox2" kodo rašymas

Tada dukart spustelėkite ListBox2 . Kai Privati paprocedūra vadinamas . ListBox2_Click įveskite šį kodą.

 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 veiksmas: "CommanButton1" kodo rašymas

Taip pat dukart spustelėkite CommandButton1 . Po to, kai Privati paprocedūra vadinamas . CommandButton1_Change atveriama, į ją įterpkite šį kodą.

 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 "Pasirinkite visas parinktis teisingai.", vbExclamation End Sub 

⧪ 7 veiksmas: naudotojo formos paleidimo kodo rašymas

Dabar yra paskutinis žingsnis. Įterpkite naują Modulis VBA įrankių juostą ir įterpkite šį kodą.

 Sub Run_UserForm() UserForm1.Caption = "Sudėti vertes" 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 UserForm1.Show End Sub 

⧪ 8 veiksmas: naudotojo formos paleidimas

Jūsų Naudotojo forma dabar yra paruoštas naudoti. Norėdami jį paleisti, pasirinkite duomenų rinkinį iš darbalapio (įskaitant Antraštės ) ir paleiskite Makro vadinamas . Run_UserForm .

Svetainė Naudotojo forma bus įkeltos visos parinktys. Pasirinktas diapazono adresas bus rodomas TextBox1 ( B3:D4 čia). Jei norite, galite jį pakeisti. Pasirinktas darbo lapo intervalas pasikeis.

Pasirinkite stulpelius, kuriuos norite sujungti iš Sujungiami stulpeliai ListBox. Čia pasirinkau Knygos pavadinimas ir Kaina .

Įveskite Separatorius . Čia įvedžiau kablelis ( , ).

Pasirinkite darbalapio pavadinimą, į kurį norite įdėti sugretintą diapazoną iš Suderinta į sąrašo langelį. Čia įrašiau Lapas3 .

(Pasirinkus lapą, jis bus aktyvuotas, net jei nėra aktyvus.)

Tada įdėkite Išvesties vieta . Tai pirmosios sujungto diapazono ląstelės nuoroda. Čia aš įrašiau B3 .

(Kai įeinate į Išvesties vieta , bus pasirinktas išvesties diapazonas).

Galiausiai įveskite Išvesties antraštė (išvesties diapazono antraštė). Čia aš įdėjau Susietas diapazonas .

(Kai tik įdedate Išvesties antraštė , bus nustatyta išvesties stulpelio antraštė.)

Spustelėkite GERAI . Gausite norimą išvestį norimoje vietoje.

Skaityti daugiau: Kaip sujungti eilutę ir sveikąjį skaičių naudojant VBA

Išvada

Štai keletas pavyzdžių, kaip galite naudoti "Excel VBA sujungti eilutes ir kintamuosius. Tikimės, kad pavyzdžiai jums viską paaiškino. Turite klausimų? Drąsiai klauskite mūsų. Ir nepamirškite apsilankyti mūsų svetainėje ExcelWIKI daugiau pranešimų ir atnaujinimų.

Hugh Westas yra labai patyręs Excel treneris ir analitikas, turintis daugiau nei 10 metų patirtį šioje srityje. Jis yra įgijęs apskaitos ir finansų bakalauro bei verslo administravimo magistro laipsnius. Hugh turi aistrą mokymui ir sukūrė unikalų mokymo metodą, kurį lengva sekti ir suprasti. Jo ekspertinės žinios apie „Excel“ padėjo tūkstančiams studentų ir specialistų visame pasaulyje tobulinti savo įgūdžius ir tobulėti savo karjeroje. Savo tinklaraštyje Hugh dalijasi savo žiniomis su pasauliu, siūlydamas nemokamus „Excel“ vadovėlius ir internetinius mokymus, kad padėtų asmenims ir įmonėms išnaudoti visą savo potencialą.