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

Excel SUBSTITUTE y REPLACE — Cambiar por contenido frente a cambiar por posición

|

Excel SUBSTITUTE y REPLACE — Cambiar por contenido frente a cambiar por posición

TL;DR — Ambas funciones cambian texto, pero responden a preguntas distintas. SUBSTITUTE(texto, viejo, nuevo, [instancia]) trabaja por contenido — "reemplaza cada "," por nada", o con el 4.º argumento, "reemplaza solo la 2.ª". REPLACE(texto, inicio, longitud, nuevo) trabaja por posición — "sobrescribe 5 caracteres empezando en la posición 9", sin importar lo que haya ahí. Elige la equivocada y cambiarás lo que no debías sin enterarte. SUBSTITUTE distingue mayúsculas de minúsculas; REPLACE no mira el contenido en absoluto. Ambas devuelven texto y funcionan en todas las versiones de Excel.

=SUBSTITUTE("1,234,567", ",", "")      ' -> "1234567"  (cada coma, por contenido)
=SUBSTITUTE("a-b-c", "-", ":", 2)      ' -> "a-b:c"    (solo el 2.º guion)
=REPLACE("2026-XX-01", 6, 2, "04")     ' -> "2026-04-01" (por posición)

Estas son las dos fórmulas de "buscar y reemplazar", y toda la habilidad está en saber en qué modelo mental estás. Acierta con eso y son triviales; equivócate y te pasarás una tarde preguntándote por qué cambiaron los caracteres equivocados.

Lo que vas a aprender

  • La división central: SUBSTITUTE coincide por contenido, REPLACE por posición
  • Cómo el 4.º argumento de SUBSTITUTE apunta solo a la enésima aparición
  • Por qué SUBSTITUTE distingue mayúsculas, y cómo eso te pilla
  • El famoso truco de LEN menos LEN para contar apariciones
  • Cuándo combinar REPLACE con FIND — y cuándo parar y usar TEXTSPLIT

El modelo mental: cambiar una palabra frente a estampar

SUBSTITUTE (en español: SUSTITUIR) es buscar y reemplazar por significado, como pulsar Ctrl+H: "encuentra este texto, pon ese texto en su lugar, en todas partes donde aparezca". No le importa dónde están las coincidencias, solo qué son.

REPLACE (en español: REEMPLAZAR) es un sello en una coordenada: "empezando en el carácter 9, tapa los siguientes 5 y escribe esto en su lugar". No le importa qué había ahí — solo conoce la posición. Si la cosa que quieres cambiar está en un sitio predecible, usa REPLACE. Si es una cadena predecible que podría estar en cualquier parte, usa SUBSTITUTE.

' Formato fijo -> la posición es fiable -> REPLACE
=REPLACE("ID-000123", 1, 3, "REF-")    ' "REF-000123"

' Texto conocido, ubicación desconocida -> contenido -> SUBSTITUTE
=SUBSTITUTE("Qty: 5 units", "units", "pcs")   ' "Qty: 5 pcs"

Esa única distinción resuelve casi todas las preguntas de "¿cuál uso?".

La regla que lo desbloquea todo: el 4.º argumento de SUBSTITUTE

Por defecto SUBSTITUTE reemplaza todas las apariciones — que es lo que quieres para quitar todas las comas o todos los espacios de un valor. Pero su 4.º argumento opcional, núm_de_instancia, te deja apuntar a exactamente una:

=SUBSTITUTE("a-b-c-d", "-", " ")       ' "a b c d"   — todas
=SUBSTITUTE("a-b-c-d", "-", " ", 3)    ' "a-b-c d"   — solo el 3.er guion

Esta es la característica que hace que SUBSTITUTE pegue por encima de su peso: "cambia el último separador por un espacio", "arregla solo la segunda barra". Es quirúrgico de una forma que REPLACE no puede, porque REPLACE necesitaría que calcularas la posición primero.

SUBSTITUTE distingue mayúsculas (a REPLACE le da igual)

Un fallo silencioso: SUBSTITUTE coincide con la caja exacta. SUBSTITUTE("Apple apple", "apple", "orange") cambia solo la minúscula, devolviendo "Apple orange". Esto es coherente con FIND (que también distingue mayúsculas) pero lo contrario de cómo se comportan la comparación = de la hoja y SEARCH, así que pilla a la gente. Si necesitas un reemplazo que no distinga mayúsculas, no hay ningún interruptor — normalizas primero (p. ej. SUBSTITUTE(UPPER(A2), "APPLE", ...)) o aceptas que debes coincidir con la caja exacta.

REPLACE esquiva esto por completo: nunca mira el contenido, así que la caja es irrelevante.

El truco que vale la pena saber: contar apariciones con LEN

Aquí está el idioma de SUBSTITUTE más querido, y no tiene nada que ver con reemplazar. Para contar cuántas veces aparece un carácter, mide cuánto se acorta la cadena cuando lo quitas:

' ¿Cuántas comas hay en A2?
=LEN(A2) - LEN(SUBSTITUTE(A2, ",", ""))

' ¿Cuántas palabras? (espacios + 1, para una cadena con espacios simples)
=LEN(TRIM(A2)) - LEN(SUBSTITUTE(TRIM(A2), " ", "")) + 1

Quita cada coma, mira cuántos caracteres desaparecieron — ese es tu recuento. LEN (en español: LARGO) es la clave: es el tipo de truco lateral que, una vez visto, reutilizas para siempre.

Cuándo REPLACE necesita FIND, y cuándo parar

REPLACE solo conoce posiciones, así que en cuanto la posición depende del contenido, la calculas con FIND:

' Enmascarar todo lo que va antes de la @ en un email, longitud desconocida
=REPLACE(A2, 1, FIND("@", A2) - 1, "*****")

Ese es el matrimonio legítimo de posición y contenido. Pero si recurres a SUBSTITUTE para reestructurar una cadena —partir "Nombre,Apellido,Departamento" en columnas, por ejemplo— se te ha quedado pequeño. Encadenar SUBSTITUTE para fingir una división es un antipatrón clásico; TEXTSPLIT (Excel 365) lo hace en una fórmula y se mantiene vivo. Y ten en cuenta que este es el REPLACE/SUBSTITUTE de la hoja de cálculo, no el Replace de VBA, que no distingue mayúsculas por defecto y tiene un argumento de posición que trunca — reglas distintas, mismo nombre.

El criterio

Hazte una pregunta: ¿estoy cambiando un texto concreto o una posición concreta? Texto concreto, en cualquier parte → SUBSTITUTE (añade el 4.º argumento para limitarlo a una sola aparición). Posición concreta → REPLACE (calcula la posición con FIND si no es literalmente fija). ¿Recurriendo al recuento con LEN menos LEN? Eso es SUBSTITUTE ganándose el sueldo. ¿Apilando tres SUBSTITUTE para remodelar un registro? Esa es tu señal para dividir la cadena como es debido en su lugar.

Cómo ayuda ExcelMaster

"Quita los símbolos de moneda y los separadores de miles, pero conserva el decimal", o "enmascara el número de cuenta menos los últimos cuatro" — estos son trabajos de SUBSTITUTE/REPLACE donde la trampa es coincidir por contenido cuando querías posición (o al revés). ExcelMaster lee la intención en lenguaje natural y escribe la correcta — el núm_de_instancia cuando quieres decir "solo la segunda", la posición guiada por FIND cuando quieres decir "después de la @" — para que no cambies los caracteres equivocados. Tú describes el cambio; él elige el modelo.

Preguntas frecuentes

¿Cuál es la diferencia entre SUBSTITUTE y REPLACE?

SUBSTITUTE reemplaza texto por contenido — encuentra una cadena, la cambia dondequiera que aparezca (o solo la enésima vez). REPLACE reemplaza por posición — sobrescribe un número fijo de caracteres empezando en un punto dado, sin importar el contenido. Usa SUBSTITUTE para texto conocido, REPLACE para posiciones conocidas.

¿Cómo reemplazo solo la segunda aparición de un carácter?

Usa el 4.º argumento de SUBSTITUTE: =SUBSTITUTE(A2, "-", " ", 2) cambia solo el segundo guion. REPLACE no puede apuntar por aparición — solo funciona por posición.

¿SUBSTITUTE distingue mayúsculas de minúsculas?

Sí. SUBSTITUTE(A2, "apple", "orange") no tocará "Apple". Para reemplazar sin importar la caja, normaliza el texto primero con UPPER o LOWER, ya que no hay ningún interruptor para ignorar mayúsculas.

¿Cómo cuento cuántas veces aparece un carácter en una celda?

Resta la longitud sin sustituir de la original: =LEN(A2) - LEN(SUBSTITUTE(A2, ",", "")) cuenta las comas. Quitar el carácter y medir la diferencia da el recuento.

¿Cómo reemplazo texto en una posición que no conozco de antemano?

Calcula la posición con FIND y pásasela a REPLACE: =REPLACE(A2, 1, FIND("@", A2) - 1, "*****") enmascara todo lo que va antes de la @. Esto combina el modelo de posición de REPLACE con la búsqueda por contenido de FIND.

Probado en

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

Guías relacionadas: Excel FIND y SEARCH · Excel LEFT, RIGHT y MID · Excel TEXTSPLIT · VBA Replace