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.SUBSTITUTEdistingue mayúsculas de minúsculas;REPLACEno 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:
SUBSTITUTEcoincide por contenido,REPLACEpor posición - Cómo el 4.º argumento de
SUBSTITUTEapunta solo a la enésima aparición - Por qué
SUBSTITUTEdistingue mayúsculas, y cómo eso te pilla - El famoso truco de
LENmenosLENpara contar apariciones - Cuándo combinar
REPLACEconFIND— y cuándo parar y usarTEXTSPLIT
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
