funções lógicas

Como inverter o resultado de uma expressão lógica?

Antes de prosseguir por aqui, seria bom checar se você já deu uma lida em nossa dica sobre operadores lógicos.

Para quem já está um pouco mais acostumado aos princípios básicos de lógica proposicional, não é novidade que o inverso do operador <= (menor que ou igual a) seja o operador > (maior que), tanto quanto o inverso do operador = (igual a) seja o operador <> (diferente de) e assim por diante.

No entanto, os editores de planilhas possuem algumas funções lógicas para as quais não existem funções inversas. Por exemplo, a função ÉNÚM() retorna VERDADEIRO quando o argumento representa um valor numérico. Seu inverso poderia ser uma suposta função NÃOÉNUM(), que retornasse FALSO quando recebesse um valor numérico como argumento. Mas tal função não existe.

Imagine agora que precisemos testar se o valor de uma célula é do tipo ERRO antes de utilizá-la em outra célula. A fórmula ficaria assim: SE(ÉERRO(A1)=FALSO;A1*1,5;”Valor não disponível”). Ou seja, se a função ÉERRO() retornar FALSO significa que o valor de A1 poderá ser utilizado para o cálculo.

Em vez dessa construção, que também está correta, você poderia optar por inverter o resultado de ÉERRO() para que o argumento da função SE() ficasse VERDADEIRO sempre que ÉERRO() retornasse FALSO.

A função a seguir nos ajuda a inverter o resultado de uma expressão lógica quando isso for facilitar a descrição de nosso teste lógico.

Função NÃO(lógico)

A função NÃO() retorna o inverso da expressão lógica que lhe for passada como argumento. Sabemos que 1<1 retornará FALSO, mas se você testar NÃO(1<1), essa expressão retornará VERDADEIRO.

Veja mais exemplos com a função ÉERRO() e a função ÉNUM() a seguir. Repare como a leitura das fórmulas fica mais fácil (“se não é erro…”, “se não é numérico”):

A B
1 #REF! =SE(NÃO(ÉERRO(A1));A1*1,5;”Valor indisponível”)
2 150,00 =SE(NÃO(ÉERRO(A2));A2*1,5;”Valor indisponível”)
3 ABCD =SE(NÃO(ÉNUM(A3));”Valor incompatível”;A3/100)
4 500 =SE(NÃO(ÉNUM(A4));”Valor incompatível”;A4/100)

Como resultado, você certamente encontrará o seguinte:

A B
1 #REF! Valor indisponível
2 R$ 150,00 R$ 225,00
3 ABCD Valor incompatível
3 500 5

Como utilizar operadores lógicos para determinar valores distintos em uma mesma célula?

Para criar testes lógicos que retornem valores diferentes de acordo com as condições informadas, sugerimos que você comece a conhecer os operadores lógicos disponíveis em seu editor de planilhas e explicados logo abaixo.

Em seguida, navegue pelo marcador funções lógicas e conheça as funções SE(), E(), OU() e NÃO().

Operador lógico = (igual a)

  • utilize para comparar se o valor de uma célula numérica é igual ao de outra ou é igual a um valor numérico fixo;
  • utilize para comparar se o conteúdo de uma célula de texto é igual ao de outra ou é igual a um texto fixo;
  • utilize para comparar se a data em uma célula é igual à de outra ou é igual a uma data fixa;
A B C D
1 5 10 15 =A1=5
2 5 10 15 =C2=A2+B2
3 ABC ABC ABCD =A3=B3
4 ABC ABC ABCD =C4=B4&”D”
5 30/06/2011 05/07/2011 30/12/2011 =A5=HOJE()
6 30/06/2011 05/07/2011 30/12/2011 =B6=A6+5

Resultados esperados:

A B C D
1 5 10 15 VERDADEIRO
2 5 10 15 VERDADEIRO
3 ABC ABC ABCD FALSO
4 ABC ABC ABCD VERDADEIRO
5 30/06/2011 05/07/2011 30/12/2011 FALSO
6 30/06/2011 05/07/2011 30/12/2011 VERDADEIRO

Operador lógico <> (diferente de)

  • utilize para comparar se o valor de uma célula numérica é diferente do de outra ou é diferente de um valor numérico fixo;
  • utilize para comparar se o conteúdo de uma célula de texto é diferente do de outra ou é diferente de um texto fixo;
  • utilize para comparar se a data em uma célula é diferente da de outra ou é diferente de uma data fixa;
A B C D
1 5 10 15 =A1<>5
2 5 10 15 =C2<>A2+B2
3 ABC ABC ABCD =A3<>B3
4 ABC ABC ABCD =C4<>B4&”D”
5 30/06/2011 05/07/2011 30/12/2011 =A5<>HOJE()
6 30/06/2011 05/07/2011 30/12/2011 =B6<>A6+5

Resultados esperados:

A B C D
1 5 10 15 FALSO
2 5 10 15 FALSO
3 ABC ABC ABCD VERDADEIRO
4 ABC ABC ABCD FALSO
5 30/06/2011 05/07/2011 30/12/2011 VERDADEIRO
6 30/06/2011 05/07/2011 30/12/2011 FALSO

Operador lógico < (menor que)

  • utilize para comparar se o valor de uma célula numérica é menor que o de outra ou é menor que um valor numérico fixo;
  • utilize para comparar se o número de caracteres de uma célula de texto é menor que o de outra ou é menor que o de um texto fixo;
  • utilize para comparar se a data em uma célula é anterior à de outra ou é anterior a uma data fixa;
A B C D
1 5 10 15 =A1<5
2 5 10 15 =C2<A2+B2
3 ABC ABC ABCD =A3<B3
4 ABC ABC ABCD =C4<B4&”D”
5 30/06/2011 05/07/2011 30/12/2011 =A5<HOJE()
6 30/06/2011 05/07/2011 30/12/2011 =B6<A6+5

Resultados esperados:

A B C D
1 5 10 15 FALSO
2 5 10 15 FALSO
3 ABC ABC ABCD FALSO
4 ABC ABC ABCD FALSO
5 30/06/2011 05/07/2011 30/12/2011 VERDADEIRO
6 30/06/2011 05/07/2011 30/12/2011 FALSO

Operador lógico > (maior que)

  • utilize para comparar se o valor de uma célula numérica é maior que o de outra ou é maior que um valor numérico fixo;
  • utilize para comparar se o número de caracteres de uma célula de texto é maior que o de outra ou é maior que o de um texto fixo;
  • utilize para comparar se a data em uma célula é posterior à de outra ou é posterior a uma data fixa;
A B C D
1 5 10 15 =A1>5
2 5 10 15 =C2>A2+B2
3 ABC ABC ABCD =A3>B3
4 ABC ABC ABCD =A4>B4&”D”
5 30/06/2011 05/07/2011 30/12/2011 =A5>HOJE()
6 30/06/2011 05/07/2011 30/12/2011 =B6>A6+5

Resultados esperados:

A B C D
1 5 10 15 FALSO
2 5 10 15 FALSO
3 ABC ABC ABCD FALSO
4 ABC ABC ABCD FALSO
5 30/06/2011 05/07/2011 30/12/2011 FALSO
6 30/06/2011 05/07/2011 30/12/2011 FALSO

Operador lógico <= (menor que ou igual a)

  • utilize para comparar se o valor de uma célula numérica é menor que ou igual ao de outra ou é menor que ou igual a um valor numérico fixo;
  • utilize para comparar se o número de caracteres de uma célula de texto é menor que ou igual ao de outra ou é menor que ou igual a de um texto fixo;
  • utilize para comparar se a data em uma célula é anterior ou igual à de outra ou é anterior ou igual a uma data fixa;
A B C D
1 5 10 15 =A1<=5
2 5 10 15 =C2<=A2+B2
3 ABC ABC ABCD =A3<=B3
4 ABC ABC ABCD =C4<=B4&”D”
5 30/06/2011 05/07/2011 30/12/2011 =A5<=HOJE()
6 30/06/2011 05/07/2011 30/12/2011 =B6<=A6+5

Resultados esperados:

A B C D
1 5 10 15 VERDADEIRO
2 5 10 15 VERDADEIRO
3 ABC ABC ABCD VERDADEIRO
4 ABC ABC ABCD VERDADEIRO
5 30/06/2011 05/07/2011 30/12/2011 VERDADEIRO
6 30/06/2011 05/07/2011 30/12/2011 VERDADEIRO

Operador lógico >= (maior que ou igual a)

  • utilize para comparar se o valor de uma célula numérica é maior que ou igual ao de outra ou é maior que ou igual a um valor numérico fixo;
  • utilize para comparar se o número de caracteres de uma célula de texto é maior que ou igual ao de outra ou é maior que ou igual a de um texto fixo;
  • utilize para comparar se a data em uma célula é igual ou posterior à de outra ou é igual ou posterior a uma data fixa;
A B C D
1 5 10 15 =A1>=5
2 5 10 15 =C2>=A2+B2
3 ABC ABC ABCD =A3>=B3
4 ABC ABC ABCD =C4>=B4&”D”
5 30/06/2011 05/07/2011 30/12/2011 =A5>=HOJE()
6 30/06/2011 05/07/2011 30/12/2011 =B6>=A6+5

Resultados esperados:

A B C D
1 5 10 15 VERDADEIRO
2 5 10 15 VERDADEIRO
3 ABC ABC ABCD VERDADEIRO
4 ABC ABC ABCD VERDADEIRO
5 30/06/2011 05/07/2011 30/12/2011 FALSO
6 30/06/2011 05/07/2011 30/12/2011 VERDADEIRO

Como validar mais de um critério antes de retornar um valor em uma célula?

Na dica sobre como alternar o valor de uma célula de acordo com um determinado critério, apresentamos o problema da separação de um cadastro de 1.000 inscritos em duas listas de acordo com a ordem de inscrição. Os 100 primeiros seriam colocados na lista SELECIONADOS e os demais seriam incluídos na lista EM ESPERA.

Mas e se, em vez da ordem de inscrição, você tivesse que verificar dois ou mais critérios distintos (IDADE e Nº INSCRIÇÃO, por exemplo) para decidir em qual lista colocar? Ou, digamos, se você precisasse separar apenas aqueles inscritos entre 20 e 30 anos, a partir de uma coluna IDADE?

As funções abaixo certamente serão muito úteis nesses casos.

Função E(lógico 1;[lógico 2];)

A função E() verifica se todos os testes lógicos (lógico 1, lógico 2 etc.) incluídos são verdadeiros ou não. Se todos forem verdadeiros, a função retornará VERDADEIRO. Se pelo menos um deles for falso, a função retornará FALSO.

Ou seja, E(1<2;4<8;5<=5) retornará VERDADEIRO, pois 1<2, 4<8 e 5<=5 retornam sempre VERDADEIRO. Por outro lado, E(2>0;1=1) retornará FALSO, uma vez que, apesar de 1=1 retornar VERDADEIRO, 2>0 retorna FALSO, ou seja, há pelo menos um critério que retorna FALSO.

Agora, vamos dar uma olhada no problema proposto no início da postagem, mas desta vez os inscritos que atendem ao critério de idade entre 20 e 30 anos serão sinalizados com OK e os demais por “” (caractere vazio):

A B C D
1 Nº Inscrição Nome Idade Lista
2 130 ALBERTO PEREIRA 23 =SE(E(C2>=20;C2<=30);”OK”;””)
3 80 ANTONIO FERREIRA 19 =SE(E(C3>=20;C3<=30);”OK”;””)
4 220 ANTONIO SANTOS 45 =SE(E(C4>=20;C4<=30);”OK”;””)
5 5 BRUNO DA SILVA 28 =SE(E(C5>=20;C5<=30);”OK”;””)
6 100 BRUNO FERREIRA 27 =SE(E(C6>=20;C6<=30);”OK”;””)

Como resultado, você certamente encontrará o seguinte:

A B C D
1 Nº Inscrição Nome Idade Lista
2 130 ALBERTO PEREIRA 23 OK
3 80 ANTONIO FERREIRA 19
4 220 ANTONIO SANTOS 45
5 5 BRUNO DA SILVA 28 OK
6 100 BRUNO FERREIRA 27 OK

Função OU(lógico 1;[lógico 2];)

A função OU() verifica se pelo menos um dos testes lógicos (lógico 1, lógico 2 etc.) incluídos é verdadeiro ou não. Se ao menos um deles for verdadeiro, a função retornará VERDADEIRO. Apenas quando todos são falsos, a função retornará FALSO.

Ou seja, OU(1>2;4>8;5<=5) retornará VERDADEIRO, pois apesar de 1>2 e 4>8 retornarem FALSO, 5<=5 retorna VERDADEIRO e é suficiente atender a apenas um critério para que a função retorne VERDADEIRO. Como era de se esperar, OU(2<0;1<>1) retornará FALSO, pois tanto 2>0 quanto 1<>1 retornam FALSO.

Bom, vamos imaginar então que a lista do início da postagem tivesse de atender aos seguintes critérios: o número de inscrição é menor do que 50 ou a idade é maior que 25 anos. Utilizaremos OK para quem atender a qualquer dos critérios e “” (caractere vazio) para os demais:

A B C D
1 Nº Inscrição Nome Idade Lista
2 130 ALBERTO PEREIRA 23 =SE(OU(A2<50;C2>25);”OK”;””)
3 80 ANTONIO FERREIRA 19 =SE(OU(A3<50;C3>25);”OK”;””)
4 220 ANTONIO SANTOS 45 =SE(OU(A4<50;C4>25);”OK”;””)
5 5 BRUNO DA SILVA 28 =SE(OU(A5<50;C5>25);”OK”;””)
6 100 BRUNO FERREIRA 27 =SE(OU(A6<50;C6>25);”OK”;””)

Como resultado, você certamente encontrará o seguinte:

A B C D
1 Nº Inscrição Nome Idade Lista
2 130 ALBERTO PEREIRA 23
3 80 ANTONIO FERREIRA 19
4 220 ANTONIO SANTOS 45 OK
5 5 BRUNO DA SILVA 28 OK
6 100 BRUNO FERREIRA 27 OK

Como alternar o valor de uma célula de acordo com um determinado critério?

Para quem está iniciando no uso de planilhas em geral, a função que iremos apresentar a seguir é essencial e está presente em praticamente todas as planilhas que envolvam algum cálculo.

Imagine que você tenha recebido um cadastro em ordem alfabética contendo 1.000 inscritos e precise dividi-los em apenas duas listas, pelo critério do número da inscrição. Se o número da inscrição for menor ou igual a 100, os candidatos ficarão na lista SELECIONADOS. Os demais ficarão na lista EM ESPERA.

Veja como ficará fácil essa divisão, mesmo com números de inscrição misturados no cadastro, através da função abaixo.

Função SE(teste_lógico;[valor_se_verdadeiro];[valor_se_falso])

A função SE() testa um determinado critério (teste_lógico) e retorna um valor de acordo com o resultado do teste. Se o teste lógico retornar VERDADEIRO, a função assumirá o valor que você inserir após o critério, no argumento valor_se_verdadeiro. Se o teste retornar FALSO, a função receberá o valor_se_falso que você determinar.

Assim, SE(4>2;”quatro é maior que dois”;”quatro é menor que 2″) retornará quatro é maior que dois.

Vale observar que quando você não preenche os argumentos envolvidos por colchetes (“[valor_se_verdadeiro]”, “[valor_se_falso]”), a função retornará as palavras-chaves VERDADEIRO e FALSO, conforme o caso.

Agora, veja como seria a solução para a lista de inscrição que mencionamos no início:

A B C
1 Nº Inscrição Nome do candidato Lista
2 130 ALBERTO PEREIRA =SE(A2<=100;”SELECIONADOS”;”EM ESPERA”)
3 80 ANTONIO FERREIRA =SE(A3<=100;”SELECIONADOS”;”EM ESPERA”)
4 220 ANTONIO SANTOS =SE(A4<=100;”SELECIONADOS”;”EM ESPERA”)
5 5 BRUNO DA SILVA =SE(A5<=100;”SELECIONADOS”;”EM ESPERA”)
6 100 BRUNO FERREIRA =SE(A6<=100;”SELECIONADOS”;”EM ESPERA”)

Como resultado, você certamente encontrará o seguinte:

A B C
1 Nº Inscrição Nome do candidato Lista
2 130 ALBERTO PEREIRA EM ESPERA
3 80 ANTONIO FERREIRA SELECIONADOS
4 220 ANTONIO SANTOS EM ESPERA
5 5 BRUNO DA SILVA SELECIONADOS
6 100 BRUNO FERREIRA SELECIONADOS