Sommario
Mentre si lavora con VBA in Excel, spesso dobbiamo concatenare stringhe (s) e variabili (s) in un foglio di lavoro. La concatenazione di stringhe (s) e variabili (s) è ampiamente utilizzata in quasi tutti i settori del nostro lavoro, a partire dal riassunto dei risultati degli studenti fino all'analisi di un'attività complessa. In questo articolo, vi mostrerò come è possibile concatenare stringhe (s) e variabili (s) in un foglio di lavoro con VBA Vi spiegherò le cose con esempi e illustrazioni appropriate.
Concatenare stringa (s) e variabile (s) in Excel VBA (vista rapida)
Scarica il quaderno di esercizi
Scaricate questo quaderno di esercizi per esercitarvi durante la lettura di questo articolo.
Concatenare stringhe e variabili.xlsmConcatenare stringhe e variabili in Excel VBA (analisi passo-passo)
Prima di tutto, vediamo come concatenare stringa (s) e variabile (s) in VBA passo dopo passo.
⧪ Concatenazione di stringhe:
Per concatenare due o più stringhe in VBA è possibile utilizzare sia il metodo aritmetico aggiunta (+) e il simbolo ampersand (& ) simbolo.
Ad esempio, per concatenare le stringhe "Grandi aspettative" e "Racconto di due città con un virgola , è possibile utilizzare:
New_String = "Great Expectations" + ", " + "A Tale of Two Cities".
Oppure,
New_String = "Grandi speranze" & ", " & "Racconto di due città"
Eseguite uno qualsiasi dei codici sopra riportati e visualizzerete il risultato concatenato, Grandi speranze, Racconto di due città .
⧪ Concatenazione di variabili (s)
Se tutte le variabili contengono valori di stringa, è possibile utilizzare sia l'aritmetico aggiunta (+) e il simbolo ampersand (&) simbolo.
Ma se non lo fanno, si può usare solo l'opzione ampersand (&) per concatenare i simboli.
Ad esempio, abbiamo due variabili, A e B .
A contiene una stringa, "Racconto di due città , e B contiene un'altra stringa, "Le quaranta regole dell'amore .
È possibile utilizzare sia l'opzione aggiunta (+) simbolo e ampersand (&) per concatenarli.
A = "Racconto di due città" B = "Le quaranta regole dell'amore" New_String = A + ", " + B
Oppure,
A = "Racconto di due città" B = "Le quaranta regole dell'amore" New_String = A & ", " & B
In entrambi i casi, restituiranno la stringa concatenata.
Ma se A è una stringa ( "Racconto di due città" ) e B è un numero intero ( 27 ), è necessario utilizzare l'opzione ampersand (&) per concatenare i simboli.
A = "Racconto di due città" B = 27 New_String = A & ", " & B
Restituirà l'output concatenato.
Esempi di concatenazione di stringhe e variabili in Excel VBA (con macro, UDF e UserForm)
Abbiamo imparato a concatenare stringhe (s) e variabili (s) con VBA Questa volta esploreremo alcuni esempi che prevedono la concatenazione di stringhe (s) e variabili (s) con VBA .
Esempio 1: sviluppo di una macro per concatenare stringhe e variabili in Excel VBA
Abbiamo imparato a concatenare stringhe e variabili con VBA Questa volta svilupperemo un Macro per concatenare stringhe e variabili di più colonne in un foglio di lavoro.
Abbiamo un insieme di dati con nomi dei libri , autori , e prezzi di alcuni libri di una libreria chiamata Martin Bookstore.
Sviluppiamo un Macro per concatenare le colonne 1, 2, e 3 dell'insieme di dati B4:D14 in cella F4 .
Il VBA codice sarà:
⧭ Codice 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))& Separatore 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
⧭ Uscita:
Eseguite questo codice e otterrete il risultato 3 colonne concatenate nell'intervallo F4:F14.
Ulteriori informazioni: Macro per concatenare più colonne in Excel (con UDF e UserForm)
Esempio 2: creazione di una funzione definita dall'utente per concatenare stringa (s) e variabile (s) in Excel VBA
Abbiamo imparato a sviluppare un Macro per concatenare più colonne di un insieme di dati. Questa volta creeremo un file Funzione definita dall'utente per concatenare stringhe o variabili in Excel.
L'opera completa VBA codice sarà:
⧭ Codice VBA:
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
⧭ Uscita:
Selezionare la colonna in cui si desidera concatenare l'intervallo e inserire questa formula:
=ConcatenareValori("Lei", "H. Rider Haggard",", ")
Tornerà Lei, H. Rider Haggard come uscita.
Anche in questo caso, inserire la formula:
=ConcatenareValori(B4:B14,30,", ")
[ Formula della matrice Quindi non dimenticate di premere CTRL + SHIFT + ENTER a meno che non siate in Ufficio 365 .]
Concatena 30 con tutti i valori dell'intervallo B4:B14 .
Infine, inserire:
=ConcatenareValori(B4:B14,C4:C14,", ")
[Ancora Formula della matrice Quindi non dimenticate di premere CTRL + SHIFT + ENTER a meno che non siate in Office 365 .]
Concatena tutti i valori dell'intervallo B4:B14 con quelli di C4:C14 .
Per saperne di più: Come concatenare in Excel (3 modi adatti)
Letture simili:
- Come combinare il testo di due o più celle in un'unica cella in Excel (5 metodi)
- Combinare le righe in una cella in Excel
- Concatenazione di numeri in Excel (4 formule rapide)
- Combinare il testo in Excel (8 modi adatti)
- Come concatenare gli apostrofi in Excel (6 modi semplici)
Esempio 3: Sviluppo di un UserForm per concatenare stringhe e variabili in un foglio di lavoro diverso in Excel VBA
Abbiamo imparato a sviluppare un Macro e un Funzione definita dall'utente per concatenare stringhe e valori. Infine, svilupperemo un file Modulo utente per concatenare stringhe e valori nella posizione desiderata del foglio di lavoro desiderato.
⧪ Passo 1: inserimento del modulo utente
Vai al sito Inserire> UserForm nel file VBA per inserire un nuovo elemento Modulo utente .
⧪ Passo 2: trascinare gli strumenti nel modulo utente
A Modulo utente chiamato UtenteForm1 verrà aperto, insieme a un file Cassetta degli attrezzi chiamato Controllo .
Muovete il mouse su questo e Toolbox e trascinare 2 ListBox, 5 TextBox, 7 Labels e 1 CommanButtons nella UserForm. .
Modificare le visualizzazioni del Etichette come mostrato nella figura.
Allo stesso modo, si può modificare la visualizzazione del campo Pulsante di comando a OK .
⧪ Passo 3: scrivere il codice per TextBox1
Fare doppio clic su Casella di testo1 . A Sottoprocedura privata chiamato TextBox1_Change Si aprirà il seguente codice. Inserite il seguente codice.
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
⧪ Passo 4: scrittura del codice per TextBox3
Allo stesso modo, fate doppio clic su Casella di testo3 . un altro Sottoprocedura privata chiamato TextBox3_Change Si aprirà il seguente codice. Inserite il seguente codice.
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
⧪ Passo 5: scrittura del codice per la casella di testo4
Inoltre, fare doppio clic su Casella di testo3 . un altro Sottoprocedura privata chiamato TextBox3_Change Si aprirà il seguente codice. Inserite il seguente codice.
Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub
⧪ Passo 6: scrivere il codice per ListBox2
Quindi fare doppio clic su ListBox2 . quando il Sottoprocedura privata chiamato ListBox2_Click si apre, inserire questo codice.
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
⧪ Passo 7: scrittura del codice per CommanButton1
Inoltre, fare doppio clic su Pulsante di comando1 . dopo il Sottoprocedura privata chiamato Pulsante di comando1_Cambia si apre, inserendovi il seguente codice.
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 "Scegliere correttamente tutte le opzioni", vbExclamation Fine Sub
⧪ Passo 7: scrivere il codice per l'esecuzione di UserForm
Ora è il passo finale: inserire un nuovo file Modulo dal VBA e inserire il seguente codice.
Sub Run_UserForm() UserForm1.Caption = "Concatena valori" 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
⧪ Passo 8: esecuzione del modulo utente
Il tuo Modulo utente Per eseguirlo, selezionare l'insieme di dati dal foglio di lavoro (incluso il campo Intestazioni ) ed eseguire il programma Macro chiamato Esegui_Form_Utente .
Il Modulo utente viene caricato con tutte le opzioni. L'indirizzo dell'intervallo selezionato viene visualizzato su Casella di testo1 ( B3:D4 Se lo si desidera, è possibile modificarlo. L'intervallo selezionato nel foglio di lavoro cambierà.
Selezionate le colonne che desiderate concatenare dalla finestra di dialogo Colonne da concatenare ListBox. Qui ho selezionato Nome del libro e Prezzo .
Inserire il Separatore . Qui ho inserito un virgola ( , ).
Selezionate il nome del foglio di lavoro in cui volete inserire l'intervallo concatenato dalla finestra di dialogo Concatenato in Qui ho inserito Foglio3 .
(Nel momento in cui si seleziona il foglio, questo viene attivato, anche se non è quello attivo).
Inserire quindi il Posizione di uscita È il riferimento di cella della prima cella dell'intervallo concatenato. Qui ho messo B3 .
(Nel momento in cui si entra nel Posizione di uscita , verrà selezionata la gamma di uscita).
Infine, inserire il nome del file Testata di uscita (Intestazione dell'intervallo di uscita). Qui ho messo Intervallo concatenato .
(Nel momento in cui si mette il Testata di uscita , verrà impostata l'intestazione della colonna di uscita).
Cliccare OK Si otterrà l'output desiderato nella posizione desiderata.
Ulteriori informazioni: Come concatenare stringhe e numeri interi con VBA
Conclusione
Ecco alcuni esempi in cui è possibile utilizzare Excel VBA per concatenare stringhe e variabili. Spero che gli esempi vi abbiano chiarito le idee. Se avete domande, non esitate a farcele. E non dimenticate di visitare il nostro sito ExcelWIKI per ulteriori post e aggiornamenti.