Cómo concatenar cadena y variable en Excel VBA (Un análisis detallado)

  • Compartir Este
Hugh West

Mientras trabajaba con VBA en Excel, a menudo tenemos que concatenar cadena (s) y variable (s) en una hoja de trabajo. La concatenación de cadena (s) y variable (s) se utiliza ampliamente en casi todos los sectores en nuestros trabajos, a partir de resumir los resultados de los estudiantes a analizar un negocio complejo. En este artículo, te mostraré cómo puedes concatenar cadena (s) y variable (s) en una hoja de trabajo con VBA en Excel. Explicaré las cosas con ejemplos e ilustraciones adecuadas.

Concatenar Cadena (s) y Variable (s) en Excel VBA (Vista Rápida)

Descargar el cuaderno de prácticas

Descárgate este cuaderno de prácticas para ejercitarte mientras lees este artículo.

Concatenar cadena y variable.xlsm

Concatenar Cadena (s) y Variable (s) en Excel VBA (Análisis Paso a Paso)

En primer lugar, veamos cómo podemos concatenar cadena (s) y variable (s) en VBA paso a paso.

⧪ Cadena de concatenación (s):

Para concatenar dos o más cadenas en VBA puede utilizar tanto la aritmética suma (+) y el símbolo ampersand (& ) símbolo.

Por ejemplo, para concatenar las cadenas "Grandes Expectativas" y "Historia de dos ciudades con un coma ...puedes usar:

 Nueva_cadena = "Grandes esperanzas" + ", " + "Historia de dos ciudades" 

O,

 Nueva_cadena = "Grandes esperanzas" & ", " & "Historia de dos ciudades" 

Ejecute cualquiera de los códigos anteriores. Mostrará la salida concatenada, Grandes esperanzas, Historia de dos ciudades .

⧪ Variable de concatenación (s)

Si todas las variables contienen valores de cadena, entonces puede utilizar tanto la aritmética suma (+) y el símbolo ampersand (&) símbolo.

Pero si no lo hacen, entonces usted puede utilizar sólo el ampersand (&) para concatenar.

Por ejemplo, tengamos dos variables, A y B .

A contiene una cadena, "Historia de dos ciudades y B contiene otra cadena, "Las Cuarenta Reglas del Amor" .

Puede utilizar tanto el suma (+) símbolo y ampersand (&) para concatenarlos.

 A = "Historia de dos ciudades" B = "Las cuarenta reglas del amor" New_String = A + ", " + B 

O,

 A = "Historia de dos ciudades" B = "Las cuarenta reglas del amor" New_String = A & ", " & B 

En ambos casos, devolverán la cadena concatenada.

Pero si A es una cadena ( "Historia de dos ciudades ) y B es un número entero ( 27 ), debe utilizar el ampersand (&) para concatenar.

 A = "Historia de dos ciudades" B = 27 Nueva_cadena = A & ", " & B 

Devolverá la salida concatenada.

Ejemplos para Concatenar Cadenas y Variables en Excel VBA (Involucrando Macro, UDF y UserForm)

Hemos aprendido a concatenar cadena (s) y variable (s) con VBA en Excel. Esta vez exploraremos algunos ejemplos que implican concatenar cadena (s) y variable (s) con VBA .

Ejemplo 1: Desarrollo de una macro para concatenar cadena (s) y variable (s) en Excel VBA

Hemos aprendido a concatenar cadenas y variables con VBA Esta vez desarrollaremos un Macro para concatenar cadenas y variables de varias columnas en una hoja de cálculo.

Aquí tenemos un conjunto de datos con nombres de libros , autores y precios de unos libros de una librería llamada Librería Martin.

Desarrollemos una Macro para concatenar columnas 1, 2, y 3 del conjunto de datos B4:D14 en celda F4 .

En VBA código será:

⧭ Código 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 

⧭ Salida:

Ejecute este código. Obtendrá el 3 columnas concatenadas en el rango F4:F14.

Read More: Macro para Concatenar Múltiples Columnas en Excel (con UDF y UserForm)

Ejemplo 2: Creación de una Función Definida por el Usuario para Concatenar cadena (s) y variable (s) en Excel VBA

Hemos aprendido a desarrollar una Macro para concatenar varias columnas de un conjunto de datos. Esta vez crearemos una columna Función definida por el usuario para concatenar cadenas o variables en Excel.

El completo VBA código será:

⧭ Código 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 

⧭ Salida:

Seleccione la columna en la que desea concatenar el rango e introduzca esta fórmula:

=ConcatenarValores("Ella", "H. Rider Haggard",", ")

Volverá Ella, H. Rider Haggard como salida.

De nuevo, introduce la fórmula:

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

[ Fórmula Array Así que no olvides pulsar CTRL + MAYÚS + INTRO a menos que esté en Office 365 .]

Concatenará 30 con todos los valores del rango B4:B14 .

Por último, entra:

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

[Otra vez Fórmula Array Así que no olvides pulsar CTRL + MAYÚS + INTRO a menos que esté en Office 365 .]

Concatenará todos los valores del rango B4:B14 con los de C4:C14 .

Read More: Cómo concatenar en Excel (3 formas adecuadas)

Lecturas similares:

  • Cómo combinar texto de dos o más celdas en una sola celda en Excel (5 métodos)
  • Combinar Filas en una Celda en Excel
  • Concatenar Números en Excel (4 Fórmulas Rápidas)
  • Combinar texto en Excel (8 formas adecuadas)
  • Cómo concatenar apóstrofos en Excel (6 maneras fáciles)

Ejemplo 3: Desarrollo de un UserForm para Concatenar cadena (s) y variable (s) en una Hoja de Trabajo Diferente en Excel VBA

Hemos aprendido a desarrollar una Macro y un Función definida por el usuario para concatenar cadenas y valores. Por último, desarrollaremos un Formulario de usuario para concatenar cadenas y valores en la ubicación deseada de la hoja de cálculo deseada.

⧪ Paso 1: Insertar el UserForm

Ir a la Insertar> UserForm en el VBA para insertar un nuevo Formulario de usuario .

⧪ Paso 2: Arrastrar herramientas al formulario de usuario

A Formulario de usuario llamado FormularioUsuario1 junto con un Caja de herramientas llamado Controlar .

Mueva el ratón sobre el e Toolbox y arrastre 2 ListBoxes, 5 TextBoxes, 7 Labels y1 CommanButtons en el UserForm .

Cambiar las pantallas de Etiquetas como se muestra en la figura.

Del mismo modo, cambie la visualización del Botón de mando a OK .

⧪ Paso 3: Escribir el código para TextBox1

Haga doble clic en Cuadro de texto1 . A Subprocedimiento privado llamado TextBox1_Cambiar Introduzca el siguiente código.

 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 

⧪ Paso 4: Escribir código para TextBox3

Del mismo modo, haga doble clic en Cuadro de texto3 . Otro Subprocedimiento privado llamado TextBox3_Cambiar Introduzca el siguiente código.

 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 

⧪ Paso 5: Escribir código para TextBox4

Además, haga doble clic en Cuadro de texto3 . Otro Subprocedimiento privado llamado TextBox3_Cambiar Introduzca el siguiente código.

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

⧪ Paso 6: Escribir código para ListBox2

A continuación, haga doble clic en ListBox2 Cuando el Subprocedimiento privado llamado ListBox2_Click se abre, introduzca allí este código.

 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 

⧪ Paso 7: Escribir código para CommanButton1

Además, haga doble clic en BotónMando1 Después del Subprocedimiento privado llamado BotónMando1_Cambiar e inserte el siguiente código.

 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 "Elige todas las opciones correctamente.", vbExclamation End Sub 

⧪ Paso 7: Escribir el código para ejecutar el UserForm.

Ahora es el paso final. Inserte un nuevo Módulo del VBA e inserte el siguiente código.

 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 

⧪ Paso 8: Ejecutar el UserForm

Su Formulario de usuario Para ejecutarlo, seleccione el conjunto de datos de la hoja de cálculo (incluido el icono Cabeceras ) y ejecute el Macro llamado Run_UserForm .

En Formulario de usuario se cargará con todas las opciones. La dirección de rango seleccionada se mostrará en Cuadro de texto1 ( B3:D4 aquí). Si lo desea, puede cambiarlo. El rango seleccionado en la hoja de cálculo cambiará.

Seleccione las columnas que desea concatenar en la lista Columnas para Concat ListBox. Aquí he seleccionado Nombre del libro y Precio .

Introduzca el Separador Aquí he introducido un coma ( , ).

Seleccione el nombre de la hoja de cálculo en la que desea colocar el rango concatenado en el campo Concatenado en Aquí he introducido Hoja3 .

(En el momento en que selecciones la hoja, se activará, aunque no sea la activa).

A continuación, inserte el Salida Ubicación Es la referencia de la primera celda del rango concatenado. Aquí he puesto B3 .

(En el momento de entrar en el Salida Ubicación se seleccionará la gama de salida).

Y, por último, introduzca el nombre del Cabecera de salida (cabecera del rango de salida). Aquí he puesto Rango concatenado .

(En el momento en que ponga el Cabecera de salida se fijará la cabecera de la columna de salida).

Haga clic en OK Obtendrá la salida deseada en el lugar deseado.

Read More: Cómo Concatenar Cadena y Entero usando VBA

Conclusión

Estos son algunos ejemplos en los que puede utilizar Excel VBA para concatenar cadenas y variables. Espero que los ejemplos te hayan dejado todo bastante claro. ¿Tienes alguna duda? No dudes en preguntarnos. Y no olvides visitar nuestra web ExcelWIKI para más entradas y actualizaciones.

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.