=SEARCH("apple",A2) devuelve la posición en la que empieza apple en A2, contando desde 1, y no distingue mayúsculas de minúsculas. =FIND("apple",A2) hace lo mismo pero solo coincide con las mismas mayúsculas. Cuando el texto no está, las dos devuelven #¡VALOR! (#VALUE! en inglés; la tabla muestra los nombres de error en inglés). En Excel en español son HALLAR (SEARCH en inglés) y ENCONTRAR (FIND en inglés), y la tabla también acepta las fórmulas escritas en español, con punto y coma (o con comas, como en México): =HALLAR("apple";A2).
| A | B | C | |
|---|---|---|---|
| 1 | Text | FIND("apple") | SEARCH("apple") |
| 2 | Apple pie | #VALUE! | 1 |
| 3 | Green apple | 7 | 7 |
| 4 | Banana bread | #VALUE! | #VALUE! |
#VALUE! Un argumento tiene un tipo incorrecto, por ejemplo texto donde va un número.En Excel en español: =ENCONTRAR("apple";A2)Apple pie empieza con A mayúscula, así que ENCONTRAR no coincide y devuelve #¡VALOR!, mientras que HALLAR devuelve 1. En Green apple las dos devuelven 7: el espacio cuenta como carácter. Banana bread no contiene apple.
Sintaxis
=FIND(find_text, within_text, [start_num])
=SEARCH(find_text, within_text, [start_num])
find_text(texto_buscado): lo que se busca. Un carácter o una palabra.within_text(dentro_del_texto): la celda en la que se busca.start_num(núm_inicial): la posición desde la que se empieza, 1 si se omite. El resultado se sigue contando desde el primer carácter de la celda.
Si la celda contiene un texto
La posición en sí rara vez es lo que quieres. Normalmente la pregunta es "¿esta celda contiene la palabra?". Una posición es un número y un fallo es un error, así que ESNUMERO (ISNUMBER en inglés) convierte el resultado en VERDADERO o FALSO:
| A | B | C | |
|---|---|---|---|
| 1 | Note | Contains "late" | Status |
| 2 | Arrived late | TRUE | Check |
| 3 | On time | FALSE | OK |
| 4 | LATE by 2 days | TRUE | Check |
| 5 | Delivered | FALSE | OK |
=ESNUMERO(HALLAR("late";A2))HALLAR coincide con LATE en A4 porque ignora las mayúsculas. Ten en cuenta que también coincidiría con latest o chocolate: HALLAR busca caracteres, no palabras completas. Buscar " late" con un espacio delante lo acota un poco. Para contar cuántas celdas contienen una palabra, =CONTAR.SI(A2:A5;"*late*") es más corto; consulta contar celdas con texto.
| A | B | |
|---|---|---|
| 1 | Subject | Urgent? |
| 2 | URGENT: server down | |
| 3 | Monthly report | |
| 4 | Refund request, urgent |
Tu turno: En B2, devuelve TRUE si el asunto de A2 contiene la palabra urgent, escrita con cualquier combinación de mayúsculas, y FALSE si no. La fórmula se copia hacia abajo hasta B4.
Encontrar la segunda aparición
start_num te permite empezar a buscar después de la primera coincidencia. Pon un ENCONTRAR dentro de otro: el interior encuentra el primer guion, y el exterior empieza un carácter más tarde.
| A | B | C | |
|---|---|---|---|
| 1 | Code | First dash | Second dash |
| 2 | NYC-2041-B | 4 | 9 |
| 3 | BOSTON-15-AA | 7 | 10 |
=ENCONTRAR("-";A2;ENCONTRAR("-";A2)+1)Con las dos posiciones, EXTRAE (MID en inglés) puede tomar lo que hay entre los guiones: =EXTRAE(A2;B2+1;C2-B2-1) devuelve 2041.
| A | B | |
|---|---|---|
| 1 | Position | |
| 2 | ana@coddy.tech |
Tu turno: En B2, devuelve la posición de la @ en la dirección de correo.
ENCONTRAR y HALLAR devuelven #¡VALOR!
Aquí #¡VALOR! solo significa "no encontrado". Sustitúyelo por algo útil:
| A | B | |
|---|---|---|
| 1 | Position of @ | |
| 2 | ana@coddy.tech | 4 |
| 3 | not an email | 0 |
=SI.ERROR(ENCONTRAR("@";A2);0)No compares el resultado directo con un número, como en =ENCONTRAR("@";A2)>0: un fallo es un error, y la comparación devuelve #¡VALOR! en lugar de FALSO. Compruébalo con ESNUMERO, como en la sección anterior.
Comodines: solo HALLAR
HALLAR acepta los comodines ? (un carácter cualquiera) y * (cualquier secuencia de caracteres). ENCONTRAR los trata como los caracteres literales. En Excel:
=SEARCH("b?d","a bad day") returns 3
=SEARCH("2*B","NYC-2041-B") returns 5
=SEARCH("~?","Why?") returns 4, the tilde means a real question mark
=FIND("?","Why?") returns 4, FIND has no wildcards
Hay más sobre *, ? y ~ en las funciones de Excel en la página de comodines.
ENCONTRAR frente a HALLAR frente a Ctrl+B
| ENCONTRAR | HALLAR | Ctrl+B | |
|---|---|---|---|
| Mayúsculas | Deben coincidir | Se ignoran | Se ignoran, salvo que marques Coincidir mayúsculas y minúsculas |
| Comodines | No | ?, *, ~ | ?, *, ~ |
| No encontrado | #¡VALOR! | #¡VALOR! | Un mensaje |
| Resultado | Una posición, que se recalcula | Una posición, que se recalcula | Selecciona la celda |
Para localizar un valor una vez, Inicio > Buscar y seleccionar > Buscar (Ctrl+B en Excel en español, Ctrl+F en inglés, Cmd+F en Mac) es más rápido que una fórmula. Para marcar o extraer en cada fila, y mantenerlo actualizado, usa ENCONTRAR o HALLAR. Elige ENCONTRAR cuando las mayúsculas tienen significado (códigos de producto como ab y AB), y HALLAR para todo lo que escriben las personas.
Preguntas frecuentes
¿Qué diferencia hay entre ENCONTRAR y HALLAR en Excel?
ENCONTRAR distingue mayúsculas y no acepta comodines. HALLAR ignora las mayúsculas y acepta ? y *. =ENCONTRAR("a";"Apple") es #¡VALOR!, mientras que =HALLAR("a";"Apple") es 1.
¿Cómo extraigo el texto entre dos guiones en Excel?
Encuentra los dos guiones y toma lo que hay entre ellos con EXTRAE: =EXTRAE(A2;ENCONTRAR("-";A2)+1;ENCONTRAR("-";A2;ENCONTRAR("-";A2)+1)-ENCONTRAR("-";A2)-1) devuelve 2041 de NYC-2041-B. En Microsoft 365, =TEXTOANTES(TEXTODESPUES(A2;"-");"-") es más corta.
¿Por qué ENCONTRAR devuelve #¡VALOR!?
El texto no está en la celda, o está con otras mayúsculas (ENCONTRAR las distingue). Envuélvela para devolver otra cosa: =SI.ERROR(ENCONTRAR("-";A2);0).
¿Cómo encuentro la segunda aparición de un carácter?
Empieza a buscar un carácter después de la primera coincidencia: =ENCONTRAR("-";A2;ENCONTRAR("-";A2)+1). El tercer argumento es la posición desde la que se empieza.