2013-05-29 20:43:50 +0000 2013-05-29 20:43:50 +0000
89

En Excel, ¿cómo puedo comprobar si una celda está en una lista de valores (un rango de celdas)

Tengo un rango (A3:A10) que contiene nombres, y me gustaría comprobar si el contenido de otra celda (D1) coincide con uno de los nombres de mi lista.

He llamado al rango A3:A10 'algunos nombres', y me gustaría una fórmula de Excel que me diera Verdadero/Falso o 1/0 dependiendo del contenido.

Respuestas [9]

92
2013-05-29 20:47:46 +0000

=COUNTIF(algunos_nombres,D1)

debería funcionar (1 si el nombre está presente - más si hay más de una instancia).

92
66
2013-06-06 20:40:03 +0000

Mi respuesta preferida (modificada de la de Ian) es:

=COUNTIF(some_names,D1)>0

que devuelve VERDADERO si D1 se encuentra en el rango de algunos nombres al menos una vez, o FALSO en caso contrario.

(COUNTIF devuelve un entero de cuántas veces se encuentra el criterio en el rango)

66
26
2014-11-10 22:57:45 +0000

Sé que el OP declaró específicamente que la lista provenía de un rango de celdas, pero otros podrían tropezar con esto mientras buscan un rango específico de valores.

También puedes buscar valores específicos, en lugar de un rango usando la función MATCH . Esto te dará el número en el que esto coincide (en este caso, el segundo punto, por lo tanto 2). Devolverá #N/A si no hay ninguna coincidencia.

=MATCH(4,{2,4,6,8},0)

También puedes reemplazar los cuatro primeros con una celda. Pon un 4 en la celda A1 y escribe esto en cualquier otra celda.

=MATCH(A1,{2,4,6,8},0)
26
18
2013-05-29 21:09:03 +0000

Si quieres convertir el contador en alguna otra salida (como la booleana) también podrías hacer:

=IF(COUNTIF(algunos_nombres,D1)>0, VERDADERO, FALSO)

¡Disfruta!

18
8
2013-05-29 23:28:54 +0000

Para la variedad puedes usar MATCH, por ejemplo

=ISNUMBER(MATCH(D1,A3:A10,0))

8
5
2018-07-11 22:06:20 +0000

hay un pequeño truco ingenioso que devuelve el booleano en caso de que el rango some_names pueda ser especificado explícitamente como en "purple","red","blue","green","orange":

=OR("Red"={"purple","red","blue","green","orange"})

Nota esta NO es una fórmula de arreglo

5
2
2013-12-05 19:33:00 +0000

Puedes anidar --([range]=[cell]) en un argumento de IF, SUMIFS, o COUNTIFS. Por ejemplo, IF(--($N$2:$N$23=D2),"in the list!","not in the list"). Creo que esto podría usar la memoria más eficientemente.

Alternativamente, puedes envolver un ISERROR alrededor de un VLOOKUP, todo envuelto alrededor de un enunciado IF. Como, IF( ISERROR ( VLOOKUP() ) , "not in the list" , "in the list!" ).

2
0
2016-12-08 12:38:21 +0000

Versión de la Fórmula Array (introducir con Ctrl + Mayúsculas + Intro):

=OR(A3:A10=D1)
0
-1
2013-08-24 11:59:30 +0000

En situaciones como ésta, sólo quiero ser alertado de posibles errores, así que resolvería la situación de esta manera...

=if(countif(some_names,D1)>0,"","MISSING")

Entonces copiaría esta fórmula del E1 al E100. Si un valor en la columna D no está en la lista, obtendré el mensaje FALTA pero si el valor existe, obtengo una celda vacía. Eso hace que los valores faltantes se destaquen mucho más.

-1