Come concatenare stringhe e variabili in Excel VBA (analisi dettagliata)

  • Condividi Questo
Hugh West

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.xlsm

Concatenare 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.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.