No Excel, como verifico se uma célula está em uma lista de valores (um intervalo de células)

88

Eu tenho um intervalo (A3: A10) que contém nomes e gostaria de verificar se o conteúdo de outra célula (D1) corresponde a um dos nomes da minha lista.

Chamei o intervalo de A3: A10 de 'some_names' e gostaria de uma fórmula do Excel que me dê True / False ou 1/0, dependendo do conteúdo.

joseph.hainline
fonte

Respostas:

92

= COUNTIF (alguns nomes, D1)

deve funcionar (1 se o nome estiver presente - mais se houver mais de uma instância).

nozes
fonte
como posso modificar a fórmula para que funcione no caso em que some_namescontém 2 colunas e também em vez de D1 eu tenho D1: E1?
user1993
66

Minha resposta preferida (modificada de Ian) é:

=COUNTIF(some_names,D1)>0

que retorna TRUE se D1 for encontrado no intervalo some_names pelo menos uma vez ou FALSE caso contrário.

(COUNTIF retorna um número inteiro de quantas vezes o critério é encontrado no intervalo)

joseph.hainline
fonte
26

Eu sei que o OP afirmou especificamente que a lista vinha de um intervalo de células, mas outros podem se deparar com isso enquanto procuram um intervalo específico de valores.

Você também pode procurar valores específicos, em vez de um intervalo usando a MATCHfunção Isso fornecerá o número em que isso corresponde (neste caso, o segundo ponto, então 2). Retornará # N / A se não houver correspondência.

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

Você também pode substituir os quatro primeiros por uma célula. Coloque um 4 na célula A1 e digite-o em qualquer outra célula.

=MATCH(A1,{2,4,6,8},0)
RPh_Coder
fonte
1
Muito agradável. Não se esqueça de adicionar "aspas" se o seu valor não for um número (levei algumas tentativas para resolver isso).
dav
1
Infelizmente você não pode usar isso em formatação condicional :(
StarWeaver
Certamente você pode. Com o Excel 2007 e posterior, você pode usar a função IFERROR. = IFERROR (MATCH (A1, {2,4,6,8}, 0), 0) Em seguida, você pode fazer sua formatação condicional se essa célula = 0 ou> 0, o que você preferir.
RPh_Coder 07/09
6
=OR(4={2,4,6,8})
Slai 08/12/16
Essa resposta é clara: a solução retorna # N / A - isso é verdade. Mas isso parece inútil: você não pode usar # N / A em uma cláusula if, portanto, não pode dizer se (MATCH (4 {2,3}, 0), "yay", "boo") ... a resposta é # N / a não "boo"
GreenAsJade
18

Se você deseja transformar o countif em outra saída (como booleano), você também pode:

= SE (COUNTIF (alguns nomes, D1)> 0, VERDADEIRO, FALSO)

Desfrutar!

Ian McClellan
fonte
3
A ajuda TRUE e FALSE indicar o que precisa ser substituído
Darcys22
8

Para variedade, você pode usar MATCH, por exemplo

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

barry houdini
fonte
4

há um pequeno truque bacana retornando Booleano, caso o intervalo some_namespossa ser especificado explicitamente, como "purple","red","blue","green","orange":

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

Observe que essa NÃO é uma fórmula de matriz

Vrun
fonte
Na verdade, é uma fórmula de matriz. O que não é é um array entrou fórmula ;-)
robinCTS
2

Você pode aninhar --([range]=[cell])em uma IF, SUMIFSou COUNTIFSargumento. Por exemplo IF(--($N$2:$N$23=D2),"in the list!","not in the list"),. Acredito que isso possa usar a memória com mais eficiência.

Como alternativa, você pode agrupar um em ISERRORtorno de um VLOOKUP, tudo em volta de uma IFdeclaração. Como IF( ISERROR ( VLOOKUP() ) , "not in the list" , "in the list!" ),.

John Skilbeck
fonte
0

Versão da fórmula da matriz (insira com Ctrl + Shift + Enter):

=OR(A3:A10=D1)
Slai
fonte
Isso funciona. Eu acho que o voto negativo foi negativo porque o votante
negativo
-1

Em situações como essa, eu só quero ser alertado sobre possíveis erros, para resolver a situação dessa maneira ...

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

Então eu copiava esta fórmula de E1para E100. Se um valor na Dcoluna não estiver na lista, receberei a mensagem MISSING, mas se o valor existir, receberei uma célula vazia. Isso faz com que os valores ausentes se destacem muito mais.

Catchoval
fonte