Tabla de contenido
El tutorial proporciona una serie de ejemplos de fórmulas "Excel if contains" que muestran cómo devolver algo en otra columna si una celda de destino contiene un valor requerido, cómo buscar con coincidencia parcial y probar múltiples criterios con lógica OR y AND.
Una de las tareas más comunes en Excel es comprobar si una celda contiene un valor de interés. ¿Qué tipo de valor puede ser? Cualquier texto o número, un texto específico o cualquier valor (no una celda vacía).
Existen varias variaciones de la fórmula "Si la celda contiene" en Excel, dependiendo exactamente de los valores que desee encontrar. Generalmente, utilizará la función SI para realizar una prueba lógica y devolver un valor cuando se cumpla la condición (la celda contiene) y/u otro valor cuando no se cumpla la condición (la celda no contiene). Los siguientes ejemplos cubren los escenarios más frecuentes.
Si la celda contiene algún valor, entonces
Para empezar, vamos a ver cómo encontrar celdas que contengan cualquier cosa: cualquier texto, número o fecha. Para ello, vamos a utilizar una sencilla fórmula IF que comprueba las celdas que no están en blanco.
SI( célula "", valor_a_devolver , "")Por ejemplo, para devolver "No en blanco" en la columna B si la celda de la columna A de la misma fila contiene algún valor, introduzca la siguiente fórmula en B2 y, a continuación, haga doble clic en el pequeño cuadrado verde de la esquina inferior derecha para copiar la fórmula en la columna:
=IF(A2"", "No en blanco", "")
El resultado será similar a éste:
Si la celda contiene texto, entonces
Si quiere encontrar sólo celdas con valores de texto ignorando números y fechas, entonces use IF en combinación con la función ISTEXT. Aquí está la fórmula genérica para devolver algún valor en otra celda si una celda objetivo contiene cualquier texto :
IF(ISTEXT( célula ), valor_a_devolver , "")Supongamos que desea insertar la palabra "sí" en la columna B si una celda de la columna A contiene texto. Para ello, ponga la siguiente fórmula en B2:
=IF(ISTEXT(A2), "Sí", "")
Si la celda contiene un número
De forma similar, puede identificar celdas con valores numéricos (números y fechas). Para ello, utilice la función IF junto con ISNUMBER:
IF(ISNUMBER( célula ), valor_a_devolver , "")La siguiente fórmula devuelve "sí" en la columna B si la celda correspondiente de la columna A contiene algún número:
=IF(ISNUMBER(A2), "Sí", "")
Si la celda contiene un texto específico
Encontrar celdas que contengan un texto determinado (o números o fechas) es fácil. Escriba una fórmula regular IF que compruebe si una celda de destino contiene el texto deseado, y escriba el texto a devolver en el campo value_if_true argumento.
SI( célula =" texto ", valor_a_devolver , "")Por ejemplo, para averiguar si la celda A2 contiene "manzanas", utilice esta fórmula:
=IF(A2="manzanas", "Sí", "")
Si la celda no contiene un texto específico
Si busca el resultado contrario, es decir, devolver algún valor a otra columna si una celda de destino no contiene el texto especificado ("manzanas"), realice una de las siguientes acciones.
Introduzca una cadena vacía ("") en el campo value_if_true y el texto a devolver en value_if_false argumento:
=IF(A2="manzanas", "", "No manzanas")
O ponga el operador "no igual a prueba_lógica y texto a devolver en value_if_true:
=IF(A2 "manzanas", "No manzanas", "")
En cualquier caso, la fórmula dará este resultado:
Si la celda contiene texto: fórmula que distingue mayúsculas de minúsculas
Para obligar a su fórmula a distinguir entre mayúsculas y minúsculas, utilice la función EXACTO, que comprueba si dos cadenas de texto son exactamente iguales, incluyendo las mayúsculas y minúsculas:
=IF(EXACT(A2, "MANZANAS"), "Sí", "")
También puede introducir la cadena de texto del modelo en alguna celda (digamos en C1), fijar la referencia de la celda con el signo $ ($C$1), y comparar la celda de destino con esa celda:
=IF(EXACT(A2,$C$1), "Sí", "")
Si la celda contiene una cadena de texto específica (coincidencia parcial)
Hemos terminado con las tareas triviales y pasamos a otras más desafiantes e interesantes :) En este ejemplo, se necesitan tres funciones diferentes para averiguar si un carácter o subcadena dados forman parte del contenido de la celda:
IF(ISNUMBER(SEARCH(" texto" , célula )), valor_a_devolver ,"")Trabajando desde dentro hacia fuera, esto es lo que hace la fórmula:
- La función BUSCAR busca una cadena de texto, y si se encuentra la cadena, devuelve la posición del primer carácter, el error #VALOR! en caso contrario.
- La función ISNUMBER comprueba si SEARCH ha tenido éxito o ha fallado. Si SEARCH ha devuelto algún número, ISNUMBER devuelve TRUE. Si SEARCH produce un error, ISNUMBER devuelve FALSE.
- Por último, la función IF devuelve el valor especificado para las celdas que tienen TRUE en la prueba lógica, una cadena vacía ("") en caso contrario.
Y ahora, veamos cómo funciona esta fórmula genérica en hojas de cálculo de la vida real.
Si la celda contiene cierto texto, ponga un valor en otra celda
Supongamos que tiene una lista de pedidos en la columna A y desea encontrar los pedidos con un identificador específico, digamos "A-". La tarea se puede realizar con esta fórmula:
=IF(ISNUMBER(SEARCH("A-",A2)), "Válido","")
En lugar de codificar la cadena en la fórmula, puede introducirla en una celda separada (E1) y hacer referencia a esa celda en la fórmula:
=IF(ISNUMBER(SEARCH($E$1,A2)), "Válido","")
Para que la fórmula funcione correctamente, asegúrese de bloquear la dirección de la celda que contiene la cadena con el signo $ (referencia de celda absoluta).
Si la celda contiene un texto específico, cópielo en otra columna
Si desea copiar el contenido de las celdas válidas en otro lugar, sólo tiene que introducir la dirección de la celda evaluada (A2) en el campo value_if_true argumento:
=IF(ISNUMBER(SEARCH($E$1,A2)),A2,"")
La siguiente captura de pantalla muestra los resultados:
Si la celda contiene un texto específico: fórmula que distingue mayúsculas de minúsculas
En los dos ejemplos anteriores, las fórmulas no distinguen entre mayúsculas y minúsculas. En situaciones en las que trabaje con datos que distinguen entre mayúsculas y minúsculas, utilice la función BUSCAR en lugar de BUSCAR para distinguir entre mayúsculas y minúsculas.
Por ejemplo, la siguiente fórmula identificará sólo los pedidos con la "A-" mayúscula ignorando la "a-" minúscula.
=IF(ISNUMBER(FIND("A-",A2)), "Válido","")
Si la celda contiene una de varias cadenas de texto (lógica OR)
Para identificar las celdas que contienen al menos una de las muchas cosas que está buscando, utilice una de las siguientes fórmulas.
Fórmula IF OR ISNUMBER SEARCH
El enfoque más obvio sería comprobar cada subcadena individualmente y hacer que la función OR devolviera TRUE en la prueba lógica de la fórmula IF si se encuentra al menos una subcadena:
IF(OR(ISNUMBER(SEARCH(" cadena1 ", célula )), ISNUMBER(SEARCH(" cadena2 ", célula ))), valor_a_devolver , "")Supongamos que tiene una lista de SKUs en la columna A y quiere encontrar los que incluyen "vestido" o "falda". Puede hacerlo utilizando esta fórmula:
=IF(OR(ISNUMBER(SEARCH("vestido",A2)),ISNUMBER(SEARCH("falda",A2))), "Válido ","")
La fórmula funciona bastante bien para un par de elementos, pero ciertamente no es el camino a seguir si desea comprobar muchas cosas. En este caso, un mejor enfoque sería utilizar la función SUMPRODUCT como se muestra en el siguiente ejemplo.
Fórmula SUMPRODUCT ISNUMBER SEARCH
Si se trata de varias cadenas de texto, buscar cada cadena individualmente haría que la fórmula fuera demasiado larga y difícil de leer. Una solución más elegante sería incrustar la combinación BUSCAR ISNUMBER en la función SUMPRODUCT, y ver si el resultado es mayor que cero:
SUMPRODUCTO(--ESNÚMERO(BÚSQUEDA( cadenas , célula )))>0Por ejemplo, para averiguar si A2 contiene alguna de las palabras introducidas en las celdas D2:D4, utilice esta fórmula:
=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0
También puede crear un intervalo con nombre que contenga las cadenas que desea buscar, o introducir las palabras directamente en la fórmula:
=SUMPRODUCT(--ISNUMBER(SEARCH({"vestido", "falda", "vaqueros"},A2)))>0
En cualquier caso, el resultado será similar a éste:
Para que la salida sea más fácil de usar, puede anidar la fórmula anterior en la función IF y devolver su propio texto en lugar de los valores TRUE/FALSE:
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Válido", "")
Cómo funciona esta fórmula
En el fondo, se utiliza ISNUMBER junto con SEARCH como se explica en el ejemplo anterior. En este caso, los resultados de la búsqueda se representan en forma de matriz como {TRUE;FALSE;FALSE}. Si una celda contiene al menos una de las subcadenas especificadas, habrá TRUE en la matriz. El operador unario doble (--) coacciona los valores TRUE / FALSE a 1 y 0, respectivamente, y entrega una matriz como{1;0;0}. Por último, la función SUMPRODUCTO suma los números y seleccionamos las celdas en las que el resultado es mayor que cero.
Si la celda contiene varias cadenas (lógica AND)
En situaciones en las que desee encontrar celdas que contengan todas las cadenas de texto especificadas, utilice la ya conocida combinación BÚSQUEDA ISNÚMERO junto con IF AND:
IF(AND(ISNUMBER(SEARCH(" cadena1 ", célula )), ISNUMBER(SEARCH(" cadena2 ", célula ))), valor_a_devolver ,"")Por ejemplo, puede encontrar SKUs que contengan tanto "vestido" como "azul" con esta fórmula:
=IF(AND(ISNUMBER(SEARCH("vestido",A2)),ISNUMBER(SEARCH("azul",A2))), "Válido ","")
O bien, puede escribir las cadenas en celdas separadas y hacer referencia a esas celdas en su fórmula:
=IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2))), "Válido ","")
Como solución alternativa, puede contar las apariciones de cada cadena y comprobar si cada recuento es mayor que cero:
=IF(AND(COUNTIF(A2, "*vestido*")>0,COUNTIF(A2, "*azul*")>0), "Válido","")
El resultado será exactamente como se muestra en la captura de pantalla anterior.
Cómo devolver resultados diferentes en función del valor de la celda
En caso de que desee comparar cada celda de la columna de destino con otra lista de elementos y devolver un valor diferente para cada coincidencia, utilice uno de los siguientes enfoques.
SI anidados
La lógica de la fórmula IF anidada es así de sencilla: se utiliza una función IF independiente para probar cada condición y devolver valores diferentes en función de los resultados de esas pruebas.
SI( célula =" buscar_texto1 ", " devolver _ texto1 ", IF( célula =" buscar_texto2 ", " devolver _ texto2 ", IF( célula =" buscar_texto3 ", " devolver _ texto3 ", "")))Supongamos que tienes una lista de artículos en la columna A y quieres tener sus abreviaturas en la columna B. Para ello, utiliza la siguiente fórmula:
=IF(A2="manzana", "Ap", IF(A2="aguacate", "Av", IF(A2="plátano", "B", IF(A2="limón", "L", ""))))
Para obtener más información sobre la sintaxis y la lógica del SI anidado, consulte SI anidado de Excel: varias condiciones en una sola fórmula.
Fórmula de búsqueda
Si busca una fórmula más compacta y comprensible, utilice la función LOOKUP con los valores de búsqueda y retorno suministrados como constantes de matriz vertical:
LOOKUP( célula , {" buscar_texto1 ";" buscar_texto2 ";" buscar_texto3 ";...}, {" devolver _ texto1 ";" devolver _ texto2 ";" devolver _ texto3 ";...})Para obtener resultados precisos, asegúrese de enumerar los valores de búsqueda en orden alfabético de la A a la Z.
=LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})
Comparada con los IFs anidados, la fórmula Lookup tiene una ventaja más - entiende la función caracteres comodín y, por tanto, puede identificar coincidencias parciales.
Por ejemplo, si la columna A contiene varios tipos de plátanos, puede buscar "*plátano*" y obtener la misma abreviatura ("B") para todas las celdas de este tipo:
=LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})
Para obtener más información, consulte Fórmula de búsqueda como alternativa a los IF anidados.
Fórmula Vlookup
Cuando se trabaja con un conjunto de datos variable, puede ser más conveniente introducir una lista de coincidencias en celdas separadas y recuperarlas utilizando una fórmula Vlookup, por ejemplo:
=VLOOKUP(A2, $D$2:$E$5, 2,FALSE )
Para obtener más información, consulte el tutorial de Excel VLOOKUP para principiantes.
Así es como se comprueba si una celda contiene algún valor o texto específico en Excel. La semana que viene, vamos a seguir viendo las fórmulas Si la celda contiene de Excel y aprenderemos a contar o sumar celdas relevantes, copiar o eliminar filas enteras que contengan esas celdas, etc. ¡Permanezca atento!
Cuaderno de prácticas
Excel If Cell Contains - ejemplos de fórmulas (archivo .xlsx)