Matrices dinámicas

TEXTOANTES y TEXTODESPUES en Excel: dividir texto sin contar caracteres

Devuelven la parte de un texto anterior o posterior a un separador que tú indicas.

Estas dos sustituyen a la fórmula más tediosa de Excel. Extraer el dominio de un correo significaba =DERECHA(A2; LARGO(A2) - ENCONTRAR("@"; A2)): tres funciones y un desfase de uno que fallas al menos una vez. Ahora es =TEXTODESPUES(A2; "@").

Indicas el separador y recuperas todo lo que hay a un lado. TEXTOANTES toma la parte izquierda, TEXTODESPUES la derecha, y ninguna te pide contar un solo carácter. Donde DIVIDIRTEXTO te da todos los trozos a la vez, estas te dan el único trozo que querías.

El tercer argumento es donde se vuelven realmente útiles. Dice en qué aparición del separador cortar, y admite números negativos para contar desde el final: -1 es la última. Así se toma una extensión de archivo, o un apellido de un nombre que puede llevar segundo nombre.

Sintaxis

=TEXTOANTES(texto; delimitador; [núm_instancia]; [modo_coincidencia]; [coincidir_final]; [si_no_se_encuentra])

Argumentos

texto
Obligatorio
El valor que se corta.
delimitador
Obligatorio
Por dónde cortar. Una constante matricial permite cortar por cualquiera de varios separadores.
núm_instancia
Opcional
Qué aparición usar. 1 es la primera (por defecto); -1 es la última, -2 la penúltima.
modo_coincidencia
Opcional
0 distingue mayúsculas (por defecto), 1 no.
si_no_se_encuentra
Opcional
Qué devolver cuando el separador no está. Sin esto obtienes #N/D, que es la sorpresa más frecuente de estas funciones.

Los datos de ejemplo

Encabezados en la fila 1, datos en A2:C6.

ABC
1JugadorPuntosCorreo
2Alicia Moreau1240alicia@northwind.com
3Bruno Santos385bruno@southgate.co.uk
4Chen Wei2100chen@northwind.com
5Dana Okafor940dana@eastvale.org
6Erik Halls1560erik@southgate.co.uk

Ejemplos resueltos

=TEXTODESPUES(C2; "@")

Resultado: northwind.com

El dominio del correo en un paso. Compáralo con la versión DERECHA/LARGO/ENCONTRAR a la que sustituye.

=TEXTOANTES(C2; "@")

Resultado: alicia

La otra mitad. No hace falta ningún -1, porque estás nombrando el separador y no una posición.

=TEXTODESPUES(A2; " "; -1)

Resultado: Moreau

El último espacio en lugar del primero, así que devuelve el apellido incluso cuando hay un segundo nombre.

=TEXTODESPUES(A2; "@"; 1; 0; 0; "Sin dominio")

Resultado: Sin dominio

En un nombre no hay arroba. El último argumento convierte el #N/D en algo legible.

Ahora practícala

Leer sobre una fórmula no es lo mismo que escribirla. Abre el ejercicio de esta función y escríbela en una hoja real: recibirás comentarios inmediatos sobre qué celda está mal y por qué.

Abrir el ejercicio: Extrae el dominio de una dirección de correo

Errores habituales y cómo resolverlos

#N/D

Por qué ocurre: El separador no aparece en el texto y no se indicó si_no_se_encuentra.

Cómo resolverlo: Rellena el sexto argumento. Es con diferencia el problema más común, y aparece en cuanto una fila de cada mil tiene otro formato.

#¡VALOR!

Por qué ocurre: núm_instancia es 0, o es mayor que las veces que aparece el separador.

Cómo resolverlo: Las apariciones cuentan desde 1, no desde 0. Usa -1 para la última en vez de adivinar cuántas hay.

El resultado lleva un espacio inicial

Por qué ocurre: Cortar por "," en lugar de ", " deja pegado al resultado el espacio que seguía a la coma.

Cómo resolverlo: O incluyes el espacio en el separador, o envuelves el resultado en ESPACIOS.

#¿NOMBRE?

Por qué ocurre: Llegaron en 2022, más tarde que FILTRAR y UNICOS, así que un Excel que tenga aquellas puede seguir sin tener estas.

Cómo resolverlo: Necesitan un Microsoft 365 actual. En otros casos usa IZQUIERDA/DERECHA con ENCONTRAR.

Consejos que conviene saber

  • El -1 como núm_instancia es el argumento que merece recordarse: último espacio para un apellido, último punto para una extensión, última barra para un nombre de archivo.
  • Pasa una constante matricial para cortar por cualquiera de varios separadores: TEXTOANTES(A2; {","\";"}).
  • Anídalas para tomar una sección central: TEXTOANTES(TEXTODESPUES(A2; "-"); "-") toma lo que hay entre los dos primeros guiones.
  • Usa DIVIDIRTEXTO cuando quieras todos los trozos; estas son para cuando quieres exactamente uno.

Preguntas frecuentes

¿Cómo extraigo el dominio de una dirección de correo?

=TEXTODESPUES(A2; "@") devuelve todo lo que hay tras la arroba. Añade una alternativa para las filas que no tengan: =TEXTODESPUES(A2; "@"; 1; 0; 0; ""). Antes de estas funciones hacía falta combinar DERECHA, LARGO y ENCONTRAR.

¿Cómo obtengo la última palabra de una celda?

=TEXTODESPUES(A2; " "; -1). El -1 cuenta las apariciones desde el final, así que corta en el último espacio sin importar cuántas palabras haya.

¿En qué se diferencian de DIVIDIRTEXTO?

DIVIDIRTEXTO parte el texto en todos sus trozos y los derrama por varias celdas. TEXTOANTES y TEXTODESPUES devuelven exactamente un trozo en una celda. Si quieres solo el nombre de pila, estas mantienen el resultado contenido; si quieres el registro entero desglosado, DIVIDIRTEXTO lo hace de una vez.

Funciones relacionadas

Guías que la usan

Lecturas más largas donde esta función hace trabajo real en una hoja real.