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

Dans Excel, comment vérifier si une cellule se trouve dans une liste de valeurs (une plage de cellules)

J'ai une plage (A3:A10) qui contient des noms, et je voudrais vérifier si le contenu d'une autre cellule (D1) correspond à l'un des noms de ma liste.

J'ai nommé la plage A3:A10 “quelques noms”, et je voudrais une formule Excel qui me donnera Vrai/Faux ou 1/0 selon le contenu.

Réponses (9)

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

=COUNTIF(some_names,D1)

devrait fonctionner (1 si le nom est présent - plus si plusieurs instances).

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

Ma réponse préférée (modifiée de celle de Ian) est :

=COUNTIF(some_names,D1)>0

qui renvoie TRUE si D1 se trouve dans l'intervalle quelques noms au moins une fois, ou FALSE sinon.

(COUNTIF renvoie un nombre entier de fois où le critère se trouve dans l'intervalle)

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

Je sais que le PO indiquait spécifiquement que la liste provenait d'une série de cellules, mais d'autres pourraient tomber dessus en cherchant une série de valeurs spécifiques.

Vous pouvez également rechercher des valeurs spécifiques, plutôt qu'une série en utilisant la fonction MATCH . Vous obtiendrez ainsi le numéro où cela correspond (dans ce cas, la deuxième position, donc 2). Il retournera #N/A s'il n'y a pas de correspondance.

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

Vous pouvez également remplacer les quatre premiers par une cellule. Mettez un 4 dans la cellule A1 et tapez le dans n'importe quelle autre cellule.

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

Si vous voulez transformer le countif en une autre sortie (comme un booléen), vous pouvez aussi faire :

=IF(COUNTIF(some_names,D1)>0, TRUE, FALSE)

Enjoy !

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

Pour la variété, vous pouvez utiliser MATCH, par exemple

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

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

il y a une petite astuce pour retourner le booléen dans le cas où la plage some_names pourrait être spécifiée explicitement comme dans "purple","red","blue","green","orange" :

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

Notez que ce n'est PAS une formule de tableau

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

Vous pouvez nicher --([range]=[cell]) dans un IF, SUMIFS, ou COUNTIFS argument. Par exemple, IF(--($N$2:$N$23=D2),"in the list!","not in the list"). Je pense que cela pourrait utiliser la mémoire de manière plus efficace.

Alternativement, vous pouvez enrouler un ISERROR autour d'un VLOOKUP, le tout enroulé autour d'une déclaration IF. Comme, IF( ISERROR ( VLOOKUP() ) , "not in the list" , "in the list!" ).

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

Version de la formule Array (entrer avec Ctrl + Shift + Enter) :

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

Dans des situations comme celle-ci, je veux seulement être alerté des erreurs possibles, donc je résoudrais la situation de cette façon …

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

Puis je copierais cette formule de E1 à E100. Si une valeur de la colonne D n'est pas dans la liste, j'obtiens le message MISSING mais si la valeur existe, j'obtiens une cellule vide. Les valeurs manquantes ressortent donc beaucoup plus.