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

Excel FIND y SEARCH — Localizar texto por contenido (FIND vs SEARCH, y la trampa

|

Excel FIND y SEARCH — Localizar texto por contenido (FIND vs SEARCH, y la trampa

TL;DRFIND y SEARCH no cortan una cadena: te dicen dónde empieza un trozo de ella, como número. FIND("@", A2) devuelve la posición de la @; ese número se lo pasas a MID/LEFT para cortar por contenido en lugar de por una frágil posición fija. Dos diferencias deciden cuál usar: FIND distingue mayúsculas de minúsculas y no admite comodines; SEARCH no las distingue y acepta * y ?. Y la trampa que enrojece columnas enteras: cuando no hay coincidencia, ambas devuelven #VALUE! —nunca 0, nunca vacío— así que envuélvelas en IFERROR o compruébalas con ISNUMBER. En todas las versiones de Excel.

=FIND("@", A2)                  ' posición de @ (distingue mayúsculas, exacta)
=SEARCH("st", A2)               ' posición de "st"/"ST"/"St" (sin distinguir mayúsculas)
=ISNUMBER(SEARCH("paid", A2))   ' VERDADERO si A2 contiene "paid", en cualquier caja

FIND y SEARCH son las funciones que la gente usa menos por sí solas y más dentro de otras fórmulas — y eso es justo lo importante. Son el GPS que hace fiable la extracción de texto. Entiéndelas y el frágil hábito del RIGHT(A2, 4) desaparece.

Lo que vas a aprender

  • Por qué FIND/SEARCH devuelven una posición, no el texto — y qué hacer con ella
  • Las dos diferencias reales: distinción de mayúsculas y comodines
  • Por qué una coincidencia ausente devuelve #VALUE!, y las dos formas de manejarlo
  • El idioma ISNUMBER(SEARCH(...)) para un test limpio de "¿lo contiene?"
  • Usar el 3.er argumento para encontrar la segunda aparición

El modelo mental: un buscador de referencias, no un cortador

LEFT, MID y RIGHT cortan. FIND (en español: ENCONTRAR) y SEARCH (en español: HALLAR) localizan. Responden a una sola pregunta —"¿en qué posición de carácter empieza esta subcadena?"— y devuelven un número. Por sí solo ese número parece inútil; su trabajo es convertirse en el núm_inicial de un MID o en el argumento de longitud de un LEFT:

' Obtener el dominio de un email: todo lo que va después de la @
=MID(A2, FIND("@", A2) + 1, 99)

' Obtener el nombre de pila: todo lo que va antes del primer espacio
=LEFT(A2, FIND(" ", A2) - 1)

Este es el emparejamiento que convierte el corte por posición en corte por contenido. Dejas de decir "toma los caracteres del 1 al 5" y empiezas a decir "toma todo hasta el espacio, esté donde esté". El corte ahora sigue a los datos en lugar de suponer su forma.

La regla que lo desbloquea todo: FIND vs SEARCH son dos diferencias, no una

La gente recuerda "FIND distingue mayúsculas" y se olvida de la segunda diferencia, igual de importante. Aquí está el cuadro completo:

Mayúsculas Comodines (* ?)
FIND Distingue — "a""A" No admite (los trata literalmente)
SEARCH No distingue — "a" = "A" Admite

Así que:

=FIND("s", "Sales")     ' 5  — la s minúscula; la S mayúscula se salta
=SEARCH("s", "Sales")   ' 1  — coincide con la S mayúscula, ignora la caja
=SEARCH("a?c", A2)      ' busca "a", cualquier carácter, "c"  — solo SEARCH hace esto
=FIND("a?c", A2)        ' busca el texto literal "a?c"

El criterio es sencillo: recurre a FIND cuando importen las mayúsculas o cuando tu término de búsqueda contenga caracteres que de otro modo actuarían como comodines; recurre a SEARCH cuando quieras una coincidencia indulgente y humana. Para "¿menciona esta celda 'paid' en cualquier capitalización?", SEARCH es la herramienta correcta.

La trampa #VALUE!: la ausencia de coincidencia es un error, no un cero

Este es el comportamiento que sorprende a todo el mundo. Cuando la subcadena no está, FIND y SEARCH no devuelven 0 ni una cadena vacía: devuelven #VALUE!. Mete uno en una columna donde algunas filas no tienen la subcadena y la columna entera se enciende en rojo, arrastrando consigo cualquier fórmula que la referencie.

Dos arreglos limpios, según lo que estés haciendo:

' Extrayendo, pero algunas filas pueden no tener el delimitador:
=IFERROR(MID(A2, FIND("-", A2) + 1, 99), A2)   ' recurre a la cadena completa

' Solo comprobando la presencia — sin extraer nada:
=ISNUMBER(SEARCH("urgent", A2))                ' VERDADERO / FALSO, nunca da error

Ese segundo idioma es el que hay que memorizar. ISNUMBER(SEARCH(término, texto)) es cómo Excel hace un test de "contiene" sin distinguir mayúsculas — combínalo con IF, FILTER o formato condicional para marcar cada fila que mencione una palabra. Es más limpio y rápido que cualquier malabarismo de comodines con COUNTIF, y nunca da error.

El 3.er argumento: encontrar la segunda aparición

Ambas funciones admiten un núm_inicial opcional — la posición desde la que empezar a buscar. Su uso principal es saltarse la primera coincidencia para encontrar la siguiente:

=FIND("-", A2)                       ' posición del 1.er guion
=FIND("-", A2, FIND("-", A2) + 1)    ' posición del 2.º guion

Anidar así para llegar a la n-ésima aparición es donde estas fórmulas dejan de ser legibles. Si te ves contando apariciones, esa es la señal para cambiar a TEXTSPLIT (divide por el delimitador y toma el trozo que quieras) o a Power Query.

El criterio

FIND y SEARCH casi nunca aparecen solas — si estás usando una por sí misma, probablemente quieres el test de contenido ISNUMBER(SEARCH()) en lugar de una posición en bruto. Su verdadero hogar es dentro de un MID/LEFT/REPLACE, aportando la posición para que el corte siga al contenido. Elige FIND para coincidencias exactas, conscientes de las mayúsculas y literales; elige SEARCH para coincidencias indulgentes, con comodines y humanas. Y nunca escribas ninguna de las dos sin decidir qué pasa cuando no hay coincidencia — #VALUE! no es un "ups", es el comportamiento documentado. Cuando el anidamiento llega a tres niveles, para y divide la cadena en su lugar.

Cómo ayuda ExcelMaster

Dominios de email, el texto entre el segundo y el tercer guion, la parte de una dirección después de la última coma — estos son rompecabezas de FIND/SEARCH, y la parte engorrosa son los desplazamientos +1/-1 y el manejo del "sin coincidencia". ExcelMaster escribe la expresión entera a partir de una descripción en lenguaje natural: anclajes correctos, la protección con IFERROR o ISNUMBER ya colocada, y FIND vs SEARCH elegido según tus necesidades de distinción de mayúsculas. Tú nombras la referencia; él hace las cuentas de la posición.

Preguntas frecuentes

¿Cuál es la diferencia entre FIND y SEARCH en Excel?

Dos diferencias. FIND distingue mayúsculas de minúsculas y trata */? como caracteres literales; SEARCH no las distingue y admite esos comodines. Usa FIND para coincidencias exactas y conscientes de las mayúsculas, y SEARCH para las indulgentes.

¿Por qué FIND devuelve #VALUE!?

Porque la subcadena que buscas no está en el texto. FIND y SEARCH devuelven #VALUE! cuando no hay coincidencia, en lugar de 0 o vacío. Envuelve la fórmula en IFERROR(...) o compruébala primero con ISNUMBER(SEARCH(...)).

¿Cómo compruebo si una celda contiene un texto concreto?

Usa =ISNUMBER(SEARCH("palabra", A2)), que devuelve VERDADERO o FALSO e ignora las mayúsculas. Para una comprobación que las distinga, cambia SEARCH por FIND. Esto nunca da error, a diferencia de usar la posición directamente.

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

Pasa el 3.er argumento opcional (núm_inicial) para empezar a buscar después de la primera coincidencia: =FIND("-", A2, FIND("-", A2) + 1) devuelve la posición del segundo guion. Más allá de la segunda aparición, plantéate TEXTSPLIT por legibilidad.

¿FIND o SEARCH admiten comodines?

Solo SEARCH. SEARCH("a?c", A2) coincide con una "a", cualquier carácter individual y luego una "c". FIND trata ? y * como caracteres literales a buscar.

Probado en

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

Guías relacionadas: Excel LEFT, RIGHT y MID · Excel SUBSTITUTE y REPLACE · Excel TEXTSPLIT · Excel IFERROR