🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel LEFT, RIGHT y MID — Extraer texto por posición (y su gran punto débil)

|

Excel LEFT, RIGHT y MID — Extraer texto por posición (y su gran punto débil)

TL;DRLEFT, RIGHT y MID son tres reglas que cortan una cadena por posición: LEFT(texto, n) toma los primeros n caracteres, RIGHT(texto, n) toma los últimos n, y MID(texto, inicio, n) toma n caracteres empezando en la posición inicio. Dos cosas pillan a todo el mundo: el resultado es siempre texto — un LEFT(A2,4) que saca "2026" no se podrá SUM ni comparar como número hasta que lo envuelvas en VALUE() — y las posiciones fijas son frágiles: en cuanto un código cambia de longitud, tu corte cae en el sitio equivocado. MID cuenta desde 1, no desde 0. Funciona en todas las versiones de Excel.

=LEFT("INV-2026-0042", 3)      ' -> "INV"
=RIGHT("INV-2026-0042", 4)     ' -> "0042"
=MID("INV-2026-0042", 5, 4)    ' -> "2026"

Toda hoja de cálculo acaba necesitando sacar un trozo de una cadena más larga: el año de un número de factura, el prefijo de un número de teléfono, el nombre de pila de un nombre completo. LEFT (en español: IZQUIERDA), RIGHT (en español: DERECHA) y MID (en español: EXTRAE) son la forma más antigua y portable de hacerlo, y vale la pena entenderlas a fondo por sus límites, no a pesar de ellos.

Lo que vas a aprender

  • La única pregunta que hacerte antes de cada extracción: ¿estoy cortando por posición o por contenido?
  • Por qué MID empieza en 1, y cómo LEFT/RIGHT/MID se reparten la misma cadena
  • Por qué el texto extraído es texto — y el arreglo con VALUE() que mantiene vivos tus cálculos
  • Por qué una posición fija es la línea más frágil de tu hoja
  • Cuándo parar y recurrir a FIND, TEXTSPLIT o Power Query en su lugar

El modelo mental: tres reglas apoyadas sobre la misma cadena

Imagina la cadena INV-2026-0042 con una regla debajo, con las posiciones numeradas desde 1. LEFT lee desde el borde izquierdo hacia dentro, RIGHT lee desde el borde derecho hacia dentro, y MID empieza donde tú señales y lee hacia la derecha. No buscan, no entienden los datos: solo cuentan caracteres y cortan.

'  posición:  1 2 3 4 5 6 7 8 9 ...
'  cadena:    I N V - 2 0 2 6 - 0 0 4 2
=LEFT(A2, 3)        ' "INV"  — los primeros 3
=MID(A2, 5, 4)      ' "2026" — 4 caracteres desde la posición 5
=RIGHT(A2, 4)       ' "0042" — los últimos 4

Esa es toda la idea. El poder y el peligro vienen del mismo hecho: te estás comprometiendo con posiciones exactas. Cuando las posiciones están garantizadas —un código de ancho fijo, un prefijo de país que siempre tiene dos letras— estas funciones son perfectas. Cuando no lo están, estás construyendo sobre arena (más sobre esto abajo).

La regla que lo desbloquea todo: el resultado es siempre texto

Esta es la trampa que manda a la gente a los foros preguntando "¿por qué no suma mi número extraído?". LEFT, RIGHT y MID siempre devuelven texto, aunque cada carácter sea un dígito. LEFT("2026-04", 4) te da el texto "2026", no el número 2026 — así que SUM, >, MIN y el eje de un gráfico lo tratan todos como una etiqueta.

Fuérzalo de vuelta a número de forma explícita:

=VALUE(LEFT(A2, 4))     ' texto "2026" -> número 2026
=--LEFT(A2, 4)          ' lo mismo, usando un doble negativo

Lo contrario también vale la pena saberlo: como la salida es texto, los ceros a la izquierda sobreviven. RIGHT("0042", 4) conserva "0042" en lugar de colapsar a 42 —que es exactamente lo que quieres para códigos postales, números de cuenta y SKU, y exactamente lo que debes deshacer con VALUE() (en español: VALOR) cuando de verdad necesitas hacer aritmética.

MID cuenta desde 1, y num_caracteres es indulgente

MID(texto, núm_inicial, núm_caracteres) empieza en 1: MID("Excel", 1, 2) es "Ex", no "xc". El error de "uno de más o de menos" aquí es el fallo de MID más común — si tu corte está desplazado un carácter, comprueba si asumiste que se contaba desde 0 como en otro lenguaje.

Dos pequeñas clemencias evitan que LEFT/RIGHT/MID den error:

  • Omite núm_caracteres en LEFT/RIGHT y por defecto vale 1.
  • Pide más caracteres de los que existen y recibes el resto de la cadena, sin error. RIGHT("AB", 10) devuelve "AB", no #VALUE!.

Así que estas funciones rara vez se rompen: fallan en silencio devolviendo el corte equivocado, lo cual es peor. Ese es el riesgo real, y nos lleva directos a su gran punto débil.

El gran punto débil: las posiciones fijas son frágiles

=RIGHT(A2, 4) para coger los últimos cuatro dígitos funciona de maravilla — hasta que llega un registro con un sufijo de 5 dígitos, y ahora estás eliminando en silencio un dígito de cada valor de la columna. Una posición que escribiste a mano solo sigue siendo correcta mientras los datos mantengan la forma exacta que supusiste. Los datos del mundo real no lo hacen.

El patrón robusto no es un MID más largo: es dejar de cortar por posición y empezar a cortar por contenido: encuentra el delimitador y luego corta en relación a él.

' Frágil: asume que el nombre es siempre "Nombre Apellido" con el espacio en la 6
=LEFT(A2, 5)

' Robusto: corta justo donde esté de verdad el primer espacio
=LEFT(A2, FIND(" ", A2) - 1)        ' la primera palabra, de cualquier longitud
=MID(A2, FIND("@", A2) + 1, 99)     ' todo lo que va después de la @ en un email

Ese FIND(" ", A2) es la bisagra. LEFT/MID/RIGHT responden a "dame los caracteres de aquí"; FIND y SEARCH responden a "¿dónde está la referencia por la que debería cortar?". Combinadas, convierten un frágil corte de posición fija en uno que sigue a los datos. Aprende FIND a continuación — es lo que hace que estas tres funciones sean fiables y no solo cómodas.

El criterio: cuándo usar la posición y cuándo no

Usa LEFT/RIGHT/MID a secas cuando la posición sea genuinamente fija: un código de divisa de 3 letras, una exportación antigua de ancho fijo, los dos primeros caracteres de la abreviatura de una provincia. Combínalas con FIND/SEARCH en cuanto el punto de corte dependa del contenido de la cadena.

Y sabe cuándo dejarlas del todo. Si estás anidando LEFT/MID/RIGHT y FIND tres niveles solo para partir una cadena por sus delimitadores, esa es la señal de que quieres TEXTSPLIT (Excel 365), que divide por un delimitador en una sola fórmula legible. Para una limpieza puntual de una importación grande, Texto en columnas o Power Query son más ligeros que una columna de fórmulas frágiles. LEFT/MID/RIGHT son bisturíes: precisos, pero solo tan buenos como tu puntería.

Cómo ayuda ExcelMaster

La parte difícil de la extracción rara vez es la función — es acertar con las posiciones y mantenerlas robustas. ExcelMaster toma una petición en lenguaje natural como "saca el año del número de factura y el dominio del email" y escribe la fórmula con los anclajes de FIND correctos, un envoltorio VALUE() cuando el resultado debe ser número, y una nota cuando una posición fija se rompería en la próxima fila rara. Tú describes qué extraer; él se encarga de contar los caracteres.

Preguntas frecuentes

¿Cuál es la diferencia entre LEFT, RIGHT y MID?

LEFT(texto, n) devuelve los primeros n caracteres, RIGHT(texto, n) devuelve los últimos n, y MID(texto, inicio, n) devuelve n caracteres empezando en la posición inicio. LEFT y RIGHT cortan desde un borde; MID corta desde cualquier punto que señales.

¿Por qué no suma mi número extraído?

Porque LEFT, RIGHT y MID siempre devuelven texto, aunque parezca un número. Envuelve el resultado en VALUE()=VALUE(LEFT(A2,4)) — o ponle delante un doble negativo =--LEFT(A2,4) para convertirlo en un número real.

¿MID empieza en 0 o en 1?

En 1. MID("Excel", 1, 2) devuelve "Ex". El primer carácter es la posición 1, no la 0 —una fuente común de errores de "uno de más o de menos" para quienes vienen de otros lenguajes de programación.

¿Cómo extraigo el texto hasta un carácter concreto?

Combina LEFT con FIND: =LEFT(A2, FIND(" ", A2) - 1) devuelve todo lo que va antes del primer espacio. Esto es mucho más robusto que una longitud fija, porque sigue la posición real del carácter.

¿Qué pasa si le pido a MID más caracteres de los que tiene la cadena?

No se rompe nada — MID (y RIGHT/LEFT) simplemente devuelve todo lo que exista. RIGHT("AB", 10) devuelve "AB", no un error. Esto es cómodo, pero también significa que una longitud equivocada falla en silencio en lugar de avisarte.

Probado en

Probado en: Excel 365 (Windows 11) — última verificación 2026-06-29.

Guías relacionadas: Excel FIND y SEARCH · Excel SUBSTITUTE y REPLACE · Excel TEXTSPLIT · Excel TEXTJOIN