Función de combinación Excel VBA

La función VBA JOIN se usa para unir una matriz de subcadenas con el delimitador especificado. Así como la palabra misma significa que necesita unir dos o más cadenas. Ahora aquí hay algunas capturas con él. Las cadenas están en una matriz y también utiliza un delimitador como función concatenada. Pero el delimitador para la función concatenar puede ser diferente entre dos cadenas cualquiera porque necesitamos proporcionar un delimitador entre cada dos cadenas usando la función concatenar. Pero en Join in VBA necesitamos proporcionar delimitador solo una vez. Ese delimitador se usa para cada cadena a unir. Pero este parámetro también es opcional. Entonces, ¿qué sucede cuando no proporcionamos un delimitador a la función? Cuando no proporcionamos ningún delimitador a la función, toma "espacio" como delimitador por defecto.

Sintaxis de la función de unión en Excel VBA

La función Unir tiene la siguiente sintaxis en Excel VBA:

Ahora, comprendamos los argumentos para la función VBA Join,

  • Source Array: es una matriz o conjunto de cadenas que queremos unir.
  • Delimitador: este es el delimitador o el carácter que usamos para diferenciar entre una cadena y otra. Un delimitador puede ser espacio o una coma o un punto final o cualquier personaje de nuestra computadora.

El resultado devuelto por esta función es una cadena.

¿Cómo usar Excel VBA Join Function?

Aprenderemos cómo usar una función VBA Join con algunos ejemplos en Excel.

Puede descargar esta plantilla VBA Join Excel aquí - Plantilla VBA Join Excel

Excel VBA Join - Ejemplo # 1

Primero, comencemos con un ejemplo básico. Tenemos una ruta de un archivo almacenado en diferentes celdas de nuestra hoja de trabajo en la hoja 1. Queremos una ruta total a esa ubicación en otra celda. El camino que debe unirse es el siguiente:

Queremos el camino en la celda E2. Siga los pasos a continuación para usar la función Unir en Excel VBA.

Paso 1: vaya a la pestaña del desarrollador y luego haga clic en Visual Basic para poder acceder al Editor VB.

Paso 2: haga clic en la pestaña Insertar e inserte un módulo en el proyecto VBA.

Paso 3: Ahora declaremos nuestro primer subproceso de la siguiente manera.

Código:

 Sub Ejemplo () End Sub 

Paso 4: Dado que tenemos los datos con nosotros, simplemente podemos usar el valor de la propiedad de rango para unir la ruta de la siguiente manera.

Código:

 Sub Ejemplo () Rango ("E2"). Valor = Fin Sub 

Paso 5: Use la función Unir para unir todas las cadenas junto con el delimitador como "\".

Código:

 Sub Ejemplo () Rango ("E2"). Valor = Unir (Matriz (Rango ("A2"). Valor, Rango ("B2"). Valor, Rango ("C2"). Valor, Rango ("D2") .Value), "\") End Sub 

Paso 6: Ejecute el código anterior presionando la tecla F5 o haciendo clic en el botón Ejecutar reproducción y tendremos nuestro resultado en la celda E2 como se muestra a continuación.

Podemos ver que las cuatro cadenas están unidas con un delimitador común que es "\".

Excel VBA Join - Ejemplo # 2

Sigamos adelante con un ejemplo práctico. Tengo el nombre del estudiante, marcas y aprobado o reprobado en una hoja. Queremos hacer una carpeta separada con archivos que contengan si el estudiante ha aprobado o reprobado o ha sido agraciado. Para esto, tomaremos prestados algunos de los conceptos de FSO (Objetos del sistema de archivos) usando la función de unión. Bueno, los datos se parecen a uno de los siguientes.

Siga los pasos a continuación para usar la función Unir en Excel VBA.

Paso 1: en el mismo módulo, comencemos otro subprocedimiento de la siguiente manera.

Código:

 Sub Ejemplo2 () End Sub 

Paso 2: Declare dos variables como FSO y flujo de texto, que es un método de FSO de la siguiente manera.

Código:

 Dim FSO como nuevo Scripting.FileSystemObject Dim St como Scripting.TextStream 

Paso 3: Ahora declaremos algunas variables más, una como un rango para contener las filas y otra como un entero para contener las columnas, mientras que otra como una cadena para almacenar el valor de cadena unida y la ruta de la carpeta y una para crear los nombres de archivo.

Código:

 Dim rw As Range Dim res As String Dim col As Integer Dim FolPath As String Dim Result As String 

Paso 4: Dado que tenemos los datos en la hoja 2, activemos primero la hoja 2.

Código:

 Hojas de trabajo ("Sheet2"). Activar 

Paso 5: Ahora cuentemos el número de columnas que tenemos en los datos de la siguiente manera,

Código:

 col = Range ("A1"). CurrentRegion.Columns.Count 

Paso 6: Ahora asignemos una ruta al Folpath utilizando la función de información ENVIRON de la siguiente manera.

Código:

 FolPath = Environ ("UserProfile") & "\ Desktop \ Result" 

Paso 7: Ahora verifiquemos si la carpeta existe o no, y si no existe, creemos una utilizando el método FSO de la siguiente manera.

Código:

 Si no es FSO.FolderExists (FolPath) Entonces FSO.CreateFolder FolPath 

Paso 8: Ahora agreguemos los nombres almacenados usando la función de compensación de la siguiente manera.

Código:

 Para cada rw In Range ("A2", Range ("A1"). End (xlDown)) Resultado = rw.Offset (0, 1) .Value 

Esto abrirá los archivos con nombres simultáneamente en el modo de adición, donde los valores más nuevos serán los últimos en agregarse. Hemos utilizado el código anterior para que el valor del resultado se asigne uno por uno.

Paso 9: Ahora, dado que la función Unir usa una matriz 1-D, usaremos la función application.transpose con la función de unión para convertirla en una matriz 1-D de la siguiente manera.

Código:

 Establezca St = FSO.OpenTextFile (FolPath & "\" & Result & ".xls", ForAppending, True) res = Join (Application.Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab ) St.WriteLine res 

¿Por qué hemos usado application.transpose? Porque, en general, el rango de la matriz (1-D) debe ser horizontal, lo que significa que una fila tiene muchas columnas. Ahora, dado que tenemos un rango vertical aquí en la columna B, que es el resultado, hemos utilizado esta función de transposición para convertirla en una matriz 1-D. Hemos utilizado VbTab como delimitador para que los valores estén en las siguientes celdas.

Paso 10: Antes de finalizar el ciclo for, cerremos el archivo y luego terminemos el ciclo for de la siguiente manera.

El código general se parece al siguiente.

Código:

 Sub Ejemplo2 () Dim FSO como Nuevo Scripting. FileSystemObject Dim St Como Scripting.TextStream Dim rw Como Range Dim res Como String Dim col Como Entero Dim FolPath Como String Dim Resultado Como String Worksheets ("Sheet2"). Activar col = Range (" A1 "). CurrentRegion.Columns.Count FolPath = Environ (" UserProfile ") &" \ Desktop \ Result "Si no es FSO.FolderExists (FolPath) Entonces FSO.CreateFolder FolPath para cada rw In Range (" A2 ", Range (" A1 "). Fin (xlDown)) Resultado = rw.Offset (0, 1). Valor establecido St = FSO.OpenTextFile (FolPath &" \ "& Result &" .xls ", ForAppending, True) res = Join (Aplicación .Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab) St.WriteLine res St.Close Siguiente rw End Sub 

Paso 11: Ahora ejecutemos el código anterior presionando la tecla F5, podemos ver en nuestro escritorio que se ha creado una carpeta con el nombre de Resultado como se muestra a continuación.

Paso 12: Abra la carpeta tendremos tres archivos como Pass, Fail y Grace.

Si abrimos cualquiera de los archivos, digamos que abrimos el archivo Fail, podemos ver los datos de los estudiantes que han fallado.

Cosas para recordar

  • Se utiliza para unir una matriz de cadenas con un delimitador común.
  • El resultado devuelto por esta función es String.
  • Es opuesto a la función Split en VBA.
  • Si no proporcionamos un delimitador para esta función, toma "espacio" como delimitador por defecto.
  • La matriz en el argumento debe ser una matriz unidimensional. Si no, podemos usar los métodos convencionales de aplicación. Transponer como se explica en el Ejemplo 2.

Artículos recomendados

Esta es una guía para la función de unión VBA. Aquí discutimos cómo usar la función Unir en Excel usando el código VBA junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. Función de fecha de Excel
  2. Concatenar cadenas en Excel
  3. Aplicaciones de la Unión VBA
  4. Columnas de concatenación de Excel

Categoría: