Una tarea común es analizar o encontrar caracteres dentro de una cadena delimitada en Microsoft Excel. Afortunadamente, Excel tiene varias funciones de cadena para ayudar, pero las expresiones resultantes son complejas. Power Query no requiere expresiones complicadas y Flash Fill es excelente para encontrar patrones, pero el lanzamiento de las dos nuevas funciones de texto de Excel simplificará aún más las cosas.
En este tutorial, revisaremos brevemente dos nuevas funciones de texto: TEXTAFTER() y TEXTBEFORE(). Nos centraremos en TEXTAFTER(), pero todo lo que aprenda se aplica a TEXTBEFORE() además de la dirección de los caracteres extraídos.
VER: Google Workspace frente a Microsoft 365: un análisis en paralelo con lista de verificación (TechRepublic Premium)
Estoy usando microsoft 365 en un sistema Windows 10 de 64 bits. Microsoft implementó estas funciones en septiembre, por lo que deberían estar disponibles para todos los suscriptores de Microsoft 365, que incluye Excel para la web.
Puede descargar el archivo de demostración de Microsoft Excel para este tutorial.
Para verificar, abra un libro de Excel e ingrese =Texto en una celda; el Autocompletar debe mostrar las nuevas funciones, como se muestra en Figura A. Si no los ve y está seguro de que tiene Microsoft 365, hable con su administrador.
Figura A
Cómo usar TEXTAFTER() en Excel
Tratar de encontrar caracteres en medio de otra cadena es una de las tareas de cadena más difíciles. Tienes que encontrar el carácter específico, contar todos los caracteres y restar el número de caracteres de la posición del carácter específico. Si nunca antes ha escrito una de estas expresiones, considérese afortunado porque ahora no tendrá que hacerlo.
La nueva función TEXTAFTER() de Excel devuelve los caracteres que aparecen después de un carácter o cadena especificados. Hace que el dolor de cabeza anterior sea nulo y sin efecto.
TEXTAFTER() usa la siguiente sintaxis:
=TEXTAFTER(text,delimiter,[instance_num], [match_mode], [match_end], [if_not_found])
con solo dos argumentos requeridos:
text
es la cadena que está buscando.delimiter
es el carácter específico que divide los caracteres anteriores y posteriores.
Los argumentos restantes son opcionales y lo ayudarán a refinar los resultados:
instance_num
es el delimitador después del cual desea extraer el texto. Por defecto,instance_num = 1
. Un número negativo comienza a buscar texto desde la derecha. Usará este argumento opcional cuando el delimitador aparezca más de una vez.match_mode
determina si la búsqueda de texto distingue entre mayúsculas y minúsculas. 0 es el valor predeterminado y distingue entre mayúsculas y minúsculas. 1 no es sensible a mayúsculas y minúsculas.match_end
evalúa el final del texto como un delimitador. 0 es el valor predeterminado y el texto es una coincidencia exacta. 1 hará coincidir el delimitador con el final del texto.if_not_found
es el valor que devuelve la función si no encuentra una coincidencia. #N/A es el valor predeterminado.
Un delimitador es un carácter que separa caracteres en una cadena. Si no está familiarizado con este término, lo aprenderá en nuestro primer ejemplo. Como puedes ver en Figura Bla función en C3
=TEXTAFTER(B3,"/")
y copiado a las celdas restantes especifica el carácter / como delimitador. Funciona para todas menos dos de las cadenas. Esas dos cadenas no contienen el delimitador en absoluto.
Figura B
Los errores no son un problema. De hecho, exponen datos inconsistentes, por lo que en este caso, no recomiendo tomar ninguna medida para inhibir ese error. Sin embargo, puede usar uno de los argumentos opcionales para mostrar información significativa sobre el error.
Figura C muestra los resultados del uso de la función if_not_found de la siguiente manera:
=TEXTAFTER(B3,"/",,,,"Missing delimiter")
El mensaje «falta el delimitador» es específico y más útil que el valor del error.
Figura C
Otro argumento importante es número_instancia porque a menudo trabajará con cadenas que contienen varias instancias del mismo delimitador.
Figura D muestra este argumento en el trabajo en otro conjunto de datos, y también expone valores inconsistentes. La columna C muestra los resultados de ejecutar Flash Fill para encontrar un patrón que devolverá solo la última parte para comparar. La columna D usa TEXTAFTER():
=TEXTAFTER(B3," ",2,,,"Missing delimiter")
Figura D
El valor 2 le dice a la función que devuelva los caracteres después de la segunda aparición del delimitador, que es un carácter de espacio, representado por » «. Hay un carácter de espacio entre las comillas. Si la cadena no tiene dos delimitadores, devuelve «falta delimitador». Sin embargo, una de las cadenas devuelve «CEO». Ese es un error que la función no puede detectar.
Puedes probar la función:
=TEXTAFTER(B3," ",-1,,,"Missing delimiter")
en la columna E. Como se puede ver en Figura E, todavía no funciona para la instancia de CEO; sin embargo, aparece una sorpresa: E6 no devuelve nada.
Al principio, podría pensar que se debe a que el valor es una sola palabra, «Susan», pero también lo es «Harkins» en la siguiente celda, y la función devuelve «Harkins», como se esperaba.
Figura E
Si sospecha que hay un personaje espacial al final de Susan o Harkins, tiene razón. Si elimina el carácter de espacio al final de Susan, la función devuelve el mensaje de error. Si te encuentras con esto, puedes envolver el argumento de texto en una función TRIM():
=TEXTAFTER(TRIM(B3)," ",-1,,,"Missing delimiter")
Cómo usar TEXTO ANTES () en Excel
No necesitamos otro artículo para demostrar TEXTBEFORE(). Esta función es idéntica a TEXTAFTER() excepto por lo obvio: TEXTBEFORE() devuelve los caracteres antes del delimitador. Todo lo demás, los argumentos, los errores y las trampas son los mismos.
El archivo de demostración descargable contiene los mismos datos usando TEXTBEFORE(), en caso de que desee verlo en funcionamiento.
Manténganse al tanto
Hay una nueva función de texto más, TEXTSPLIT(). Cubriré esto en un artículo futuro.