Curso
Construir texto bien formateado a partir de datos de Excel es una necesidad común, pero encadenar valores puede ser un lío. La función TEXTJOIN()
de Excel ofrece una solución sencilla, ya que te permite juntar rangos de texto utilizando un delimitador e incluso omitir celdas vacías.
En este artículo, repasaré los fundamentos de TEXTJOIN()
, veré cómo se compara con funciones similares como CONCAT()
y CONCATENATE()
, y trabajaré en escenarios prácticos en los que brilla. A medida que avancemos, defenderé TEXTJOIN()
porque creo que ahora es la mejor herramienta para combinar texto, y creo que al final del artículo tú también estarás convencido.
Cómo funciona TEXTJOIN() de Excel
Primero aclaremos qué hace TEXTJOIN()
y por qué su sintaxis es mucho más flexible que la anterior.
En esencia, TEXTJOIN()
te permite unir valores de texto de varias celdas, insertando un delimitador (como una coma, un espacio o un punto y coma) entre ellos. A diferencia de enfoques anteriores, puede procesar una gama completa a la vez, y puedes decidir si ignora los espacios en blanco.
Ésta es la sintaxis:
=TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)
-
delimiter
: El carácter o caracteres que quieres entre cada trozo de texto (a menudo una coma, un espacio, etc.) -
ignore_empty
: TRUE para omitir las celdas en blanco, FALSE para incluirlas -
text1, [text2], …
: Las celdas, rangos o valores que quieres combinar
Por ejemplo, supongamos que tienes valores en A1, A2 y A3. Quieres unirlos, separados por comas, saltándote los espacios en blanco:
=TEXTJOIN(",", TRUE, A1:C1)
Si A2 está vacío, obtendrás sólo los valores de A1 y A3, separados por una coma.
¿Por qué es importante? Otras funciones (estoy pensando en CONCATENATE()
) te hacen enumerar cada celda por separado, y no omiten los espacios en blanco. TEXTJOIN()
es más corta de escribir y mucho más fácil de mantener.
TEXTJOIN() vs. CONCATENAR() vs. CONCAT()
Ahora que hemos cubierto los aspectos básicos de TEXTJOIN()
, merece la pena ver cómo se compara directamente con las antiguas funciones de texto de Excel. Si has utilizado CONCATENATE()
o CONCAT()
, quizá te preguntes por qué cambiar.
-
TEXTJOIN()
: Te permite especificar un delimitador y omitir fácilmente los espacios en blanco. Acepta rangos. -
CONCAT()
: Une rangos o celdas de texto individuales, pero no puedes especificar un delimitador. No salta los espacios en blanco. -
CONCATENATE()
: La opción más antigua. Te obliga a especificar cada celda una a una. Sin campo delimitador, sin soporte de rango.
Como ejemplo, unamos los valores de B1, B2 y B3 con un punto y coma entre cada uno. Así es como se ven las distintas funciones:
=TEXTJOIN(";", TRUE, A1:C1)
=CONCAT(B1:D1)
=CONCATENATE(B1, C1, D1)
Observa que TEXTJOIN()
es el único que te permite elegir un delimitador sin más complicaciones. Con CONCAT()
o CONCATENATE()
, si quieres delimitadores, tendrías que añadirlos manualmente:
=B1 & ";" & C1 & ";" & D1
Además, y quizás igual de importante, dependiendo de cómo estén estructurados tus datos, si alguna celda está en blanco, TEXTJOIN()
puede saltársela. CONCATENATE()
y CONCAT()
incluirán el espacio en blanco.
Manejo de delimitadores y celdas vacías
Permíteme hablar un poco más sobre estos dos puntos conflictivos comunes: añadir delimitadores coherentes e ignorar las celdas en blanco.
Delimitadores personalizados
Es probable que quieras delimitadores distintos para casos diferentes. Puede que quieras comas, tubos, nuevas líneas o incluso otros tipos de caracteres como separadores.
Para unir con una barra vertical, utiliza esto:
=TEXTJOIN("|", TRUE, D1:G1)
También puedes hacer cosas más especializadas. Aquí, estoy utilizando un espacio-guión-espacio como separador:
=TEXTJOIN(" - ", TRUE, D1:G1)
Incluso puedes utilizar CHAR(10)
para un salto de línea, aunque tendrás que activar Ajustar texto en el formato de celda para ver el efecto.
Saltar espacios en blanco
Una de las cosas más frustrantes en el montaje de datos es manejar los espacios en blanco. TEXTJOIN()
te da el control. Establece el argumento ignore_empty
en TRUE
, y los espacios en blanco se omiten por completo.
=TEXTJOIN(", ", TRUE, E1:G1)
Resultado: "Rojo, Azul". La celda vacía (F2) se ignora, por lo que no te sobra ninguna coma.
Si ajustas ignore_empty
a FALSE
:
=TEXTJOIN(", ", FALSE, E1:G1)
Ahora el resultado es: "Rojo, , Azul". Esa coma de más destaca (y normalmente no es lo que quieres). Según mi experiencia, TRUE
suele ser lo mejor.
Todo esto puede parecer una pequeña diferencia, pero si practicas un poco esta función, ahorrarás tiempo en las limpiezas posteriores al proceso.
Crear listas y etiquetas dinámicas
Ahora que ya has visto lo básico, vamos a explorar las formas en que TEXTJOIN()
puede resolverproblemas. Me centraré en dos situaciones con las que probablemente te encuentres: la creación de resúmenes dinámicos y el montaje de etiquetas a partir de datos variables.
Crear resúmenes a partir de las entradas del usuario
Supón que estás recopilando respuestas de encuestas en las que los usuarios responden Sí/No a un conjunto de preguntas opcionales. Sólo algunos contestarán, por lo que los resultados se reparten entre F1 y J1.
Si quieres listar sólo las preguntas a las que respondieron "Sí", puedes utilizar TEXTJOIN()
en combinación con IF()
y FILTER()
(con arreglos dinámicos en las versiones más recientes de Excel).
Supongamos que G1:G5 tiene el texto de la pregunta, F1:F5 tiene el Sí/No correspondiente:
=TEXTJOIN(", ", TRUE, FILTER(F2:J2, F1:J1="Yes"))
Ahora tu celda de salida enumera sólo las preguntas a las que el usuario dijo "Sí", separadas por comas.
Si no tienes arreglos dinámicos, puedes construir una columna de ayuda que emita el texto de la pregunta sólo si la respuesta es Sí, y luego unir ese rango de ayuda con TEXTJOIN()
.
Crear etiquetas personalizadas a partir de datos variables
Imagina que estás preparando etiquetas de envío a partir de una tabla en la que algunos campos (como "Apartamento" o "Suite") están a veces en blanco. Quieres unir los componentes de las direcciones en una sola línea.
Si tu dirección está en H1 ("123 Main St"), H2 ("Apt 4B" o en blanco), H3 ("Springfield"), H4 ("IL"), H5 ("62704"), utilizarías:
=TEXTJOIN(", ", TRUE, H1:L1)
Si H2 está en blanco, tu salida sigue siendo limpia (¡sin dobles comas!) porque TEXTJOIN()
se salta la celda vacía.
Estos son ejemplos comunes, pero la misma lógica se aplica en cualquier lugar en el que estés fusionando datos con campos opcionales o de inclusión condicional.
Otras cosas a tener en cuenta
Por muy cómodo que sea TEXTJOIN()
, hay algunas cosas de menor importancia:
Utilizar rangos múltiples con TEXTJOIN()
Una cosa que hay que saber sobre TEXTJOIN()
es cómo gestiona los rangos múltiples. Tu puede pasar en más de un rango aunque no estén uno al lado del otro, siempre que los enumeres por separado:
=TEXTJOIN(", ", TRUE, B1:D1, B2:D2)
Esto funciona perfectamente. Excel combinará los valores de ambos rangos y los unirá. Sólo recuerda: No puedes escribirlos como un único arreglo como (A1:A3,C1:C3)
. Tienes que enumerar cada rango como su propio argumento.
Funciones anidadas y arreglos dinámicos
Si utilizas TEXTJOIN()
como parte de una fórmula de arreglo dinámico (como con UNIQUE()
o FILTER()
), recuerda que tus argumentos delimitador y ignore_empty
deben seguir siendo valores únicos. Si utilizas arreglos, se producirá un error en #VALUE!
.
Delimitadores y formato final
A veces, no quieres ningún delimitador (sólo quieres juntar todo el texto). Establece el delimitador en ""
(es decir, una cadena vacía):
=TEXTJOIN("", TRUE, A1:C1)
Ten en cuenta que si te saltas el delimitador, pierdes la principal ventaja de la función respecto a CONCAT()
.
Si quieres crear listas para utilizarlas fuera de Excel (como cargas CSV), ten cuidado con los espacios extra, los saltos de línea inesperados o la codificación de caracteres (especialmente si utilizas símbolos o Unicode).
Funciones relacionadas y técnicas avanzadas
A medida que te vayas familiarizando con TEXTJOIN()
, puede que empieces a preguntarte cómo encaja con otras funciones "dinámicas" de Excel. A menudo, combinarlo con UNIQUE()
, FILTER()
, o SORT()
lo hace aún más potente.
Por ejemplo, supongamos que quieres unir todas las categorías de productos únicos de una lista:
=TEXTJOIN(", ", TRUE, UNIQUE(TRANSPOSE(A1:E1)))
Nota: UNIQUE()
está orientado a columnas por defecto en Excel. Como estaba trabajando encon una fila, también tuve que utilizar TRANSPOSE().
O quieres sólo los que cumplan una determinada condición:
=TEXTJOIN(", ", TRUE, FILTER(A1:C1, A2:C2="Active"))
Ambos ejemplos muestran cómo TEXTJOIN()
puede resumir o informar de datos sin columnas auxiliares ni filtrado manual.
Conclusión
Si todavía utilizas CONCATENATE()
o encadenas manualmente las celdas, pasar a TEXTJOIN()
te ahorrará tiempo. (¡Lo prometo!)
Además, quiero añadir que aprender TEXTJOIN()
hace que te sientas cómodo pensando en rangos. Es una mentalidad que merece la pena cuando utilizas las funciones de arreglo dinámico de Excel y otros enfoques más modernos de . Haz nuestro curso Funciones avanzadas de Excel para seguir aprendiendo.
