No Excel, como faço para verificar se uma célula está em uma lista de valores (um intervalo de células)

85

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.

Eu nomeei o intervalo A3: A10 'some_names', e gostaria de uma fórmula do excel que me desse True / False ou 1/0 dependendo do conteúdo.

    
por joseph.hainline 29.05.2013 / 22:43

9 respostas

65

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 inteiro de quantas vezes o critério é encontrado no intervalo)

    
por 06.06.2013 / 22:40
89

=COUNTIF(some_names,D1)

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

    
por 29.05.2013 / 22:47
26

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

Você também pode pesquisar valores específicos, em vez de um intervalo, usando MATCH função. Isso lhe dará o número onde isso corresponde (neste caso, o segundo ponto, então 2). Ele 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 isso em qualquer outra célula.

=MATCH(A1,{2,4,6,8},0)
    
por 10.11.2014 / 23:57
18

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

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

Aproveite!

    
por 29.05.2013 / 23:09
7

Para variedade, você pode usar MATCH, por exemplo

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

    
por 30.05.2013 / 01:28
3

existe um pequeno truque que retorna o valor booleano no caso de o intervalo some_names poder 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

    
por 12.07.2018 / 00:06
2

Você pode aninhar --([range]=[cell]) em um argumento IF , SUMIFS ou COUNTIFS . 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 uma declaração ISERROR em torno de um VLOOKUP , tudo agrupado em torno de IF . Como, IF( ISERROR ( VLOOKUP() ) , "not in the list" , "in the list!" ) .

    
por 05.12.2013 / 20:33
0

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

=OR(A3:A10=D1)
    
por 08.12.2016 / 13:38
-1

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

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

Então copiei esta fórmula de E1 para E100 . Se um valor na coluna D 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 destaquem muito mais.

    
por 24.08.2013 / 13:59