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

88

J'ai une plage (A3: A10) qui contient des noms et j'aimerais 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 'some_names', et j'aimerais une formule excel qui me donnera True / False ou 1/0 selon le contenu.

joseph.hainline
la source

Réponses:

92

= COUNTIF (quelques noms, D1)

devrait fonctionner (1 si le nom est présent - plus si plus d'une instance).

nuts
la source
comment puis-je modifier la formule pour qu'elle fonctionne dans le cas où le some_namescontient 2 colonnes, et aussi au lieu de D1 j'ai D1: E1?
user1993
66

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

=COUNTIF(some_names,D1)>0

qui retourne VRAI si D1 est trouvé dans la plage certains noms au moins une fois, ou FALSE sinon.

(COUNTIF renvoie un entier représentant le nombre de fois où le critère est trouvé dans la plage.)

joseph.hainline
la source
26

Je sais que le PO a spécifiquement indiqué que la liste provenait de plusieurs cellules, mais d’autres pourraient tomber sur cette question tout en cherchant une plage spécifique de valeurs.

Vous pouvez également rechercher des valeurs spécifiques plutôt qu'une plage à l'aide de la MATCHfonction. Cela vous donnera le numéro où cela correspond (dans ce cas, la deuxième place, 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 ceci dans n'importe quelle autre cellule.

=MATCH(A1,{2,4,6,8},0)
RPh_Coder
la source
1
Très agréable. N'oubliez pas d'ajouter des "guillemets" si votre valeur n'est pas un nombre (cela m'a pris quelques tentatives pour résoudre ce problème).
dav
1
Malheureusement, vous ne pouvez pas utiliser ceci dans le formatage conditionnel :(
StarWeaver
Sûr que vous pouvez. Avec Excel 2007 et versions ultérieures, vous pouvez utiliser la fonction IFERROR. = IFERROR (MATCH (A1, {2,4,6,8}, 0), 0) Ensuite, vous pouvez effectuer votre mise en forme conditionnelle selon que cette cellule = 0 ou> 0, selon votre préférence.
RPh_Coder
6
=OR(4={2,4,6,8})
Slai
Cette réponse indique clairement que la solution renvoie # N / A - cela est vrai. Mais cela semble inutile: vous ne pouvez pas utiliser # N / A dans une clause if, vous ne pouvez donc pas dire IF (MATCH (4 {2,3}, 0), "yay", "boo") ... la réponse est # N / A pas "boo"
GreenAsJade
18

Si vous voulez transformer le compte en une autre sortie (comme boolean), vous pouvez aussi faire:

= IF (COUNTIF (certains_noms, D1)> 0, VRAI, FAUX)

Prendre plaisir!

Ian McClellan
la source
3
Les aides TRUE et FALSE indiquent ce qui doit être remplacé
Darcys22
8

Pour varier, vous pouvez utiliser MATCH, par exemple

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

Barry Houdini
la source
4

il y a un petit truc astucieux qui retourne un booléen dans la plage de cas some_namespeut être spécifié explicitement comme dans "purple","red","blue","green","orange":

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

Notez que ceci n'est PAS une formule matricielle

Vrun
la source
En fait, il est une formule de matrice. Ce que ce n'est pas, c'est une formule entrée dans un tableau ;-)
robinCTS
2

Vous pouvez imbriquer --([range]=[cell])dans un IF, SUMIFSou COUNTIFSargument. Par exemple, IF(--($N$2:$N$23=D2),"in the list!","not in the list"). Je crois que cela pourrait utiliser la mémoire plus efficacement.

Alternativement, vous pouvez envelopper ISERRORun VLOOKUP, tout autour d’une IFdéclaration. Comme IF( ISERROR ( VLOOKUP() ) , "not in the list" , "in the list!" ).

John Skilbeck
la source
0

Version de la formule de tableau (entrez avec Ctrl + Maj + Entrée):

=OR(A3:A10=D1)
Slai
la source
Cela marche. Je pense que cela a eu un vote négatif parce que le votant ne savait pas comment entrer une formule matricielle ... elle devrait ressembler à {= OR (R34: R36 = T34)} après sa saisie, si vous l'avez entrée correctement
GreenAsJade
-1

Dans de telles situations, je souhaite uniquement être averti des erreurs éventuelles. Je résoudrais donc la situation de cette façon ...

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

Ensuite, je copierais cette formule de E1à E100. Si une valeur de la Dcolonne ne figure pas dans la liste, j'obtiendrai le message MISSING mais si la valeur existe, j'obtiendrai une cellule vide. Cela fait ressortir beaucoup plus les valeurs manquantes.

Catchoval
la source