Função com 3 condições IF

0

Eu tenho procurado, mas parece que não consigo obter uma função IF com 4 faixas de valores trabalhando na minha planilha.

Eu preciso de uma função IF que retorne os seguintes valores:

  • 0 se o número estiver entre 0 e logo abaixo de 1 (isto é, < 1).
  • 6 se o número estiver entre 1 e abaixo de 2.
  • 8 se o número estiver entre 2 e abaixo de 3.
  • 10 se o número estiver entre 3 e 4.

Editar: =IF(A4>=3,10,IF(AND(A4>=2,P4<3),8,IF(A4>=1,6,0)))

    
por user936793 23.08.2018 / 16:37

5 respostas

3

Para o caso que você descreve, a solução INDEX / MATCH fornecida pelo cybernetic.nomad é provavelmente a mais simples. Se os números são sempre exatamente o que você descreveu, a resposta fornecida por Chris Rogers é ainda mais simples.

Tentarei responder à pergunta mais geral sobre se há uma maneira de verificar várias condições em uma única função sem aninhar várias funções IF . O IFS função que, acredito, foi introduzida no Excel 2016, permite que você faça naquela.

A função usa vários pares de parâmetros, sendo cada um deles uma condição a ser testada, seguida do valor a ser retornado, se a condição for verdadeira. A função processa os pares de parâmetros começando com o primeiro e continua até encontrar uma condição verdadeira.

=IFS(A4<0,NA(),A4<1,0,A4<2,6,A4<3,8,A4<4,10,TRUE,NA())

A função acima irá:

  • Retorna um # N / A se A4 for menor que 0 (você não disse o que deveria acontecer nesse caso).
  • Retorna 0 se A4 for menor que 1 (A4 também deve ser > = 0, ou o teste anterior teria sido verdadeiro).
  • Retorne 6 se A4 for menor que 2 (e também > = 1).
  • Retorna 8 se A4 for menor que 3 (e também > = 2).
  • Retorna 10 se A4 for menor que 4 (e também > = 3).
  • Retornar # N / A caso contrário.

Nesse caso, você pode deixar de fora os dois últimos argumentos ( ,TRUE,NA() ), pois NA() será retornado se nenhuma das condições for atendida.

    
por 23.08.2018 / 21:33
2

INDEX/MATCH pode fazer isso com bastante facilidade. Supondo que o valor a ser verificado esteja em A4 :

=INDEX({0,6,8,10},MATCH(A4,{0,1,2,3,4}))

(observe que isso retornará um erro se o conteúdo de A4 estiver abaixo de zero ou acima de 4)

Uma breve explicação (a pedido do Fixer)

MATCH(A4,{0,1,2,3,4}) classificará o valor em A4 na matriz {0,1,2,3,4} , portanto, qualquer valor tal que 0 <= A4 < 1 retornará 1; um valor tal que 1 <= A4 < 2 retornará 2; e assim por diante.

INDEX({0,6,8,10},... receberá o valor recebido de MATCH e retornará o valor correspondente da matriz {0,6,8,10} , portanto, se MATCH retornar 1 , INDEX retornará (nesse caso) 0 ; se MATCH retornar 2 , INDEX retornará (nesse caso) 6 ; e assim por diante

Para evitar o erro mencionado acima, as matrizes podem ser expandidas, por exemplo:

=INDEX({"too low",0,6,8,10,"too high"},MATCH(A4,{-100,0,1,2,3,4,100}))
    
por 23.08.2018 / 18:17
2
  • 0 if the number is between 0 and just below 1 (i.e. <1).

  • 6 if the number is between 1 and below 2.

  • 8 if the number is between 2 and below 3.

  • 10 if the number is between 3 and 4.

Existe um caminho fácil sem INDEX() e MATCH() , IFS() ou aninhados IF() .

Olhando para a sua fórmula que você postou, você está testando a célula A4 e, além de 0 , o resultado segue o padrão de equação matemática de (the integer of A4 × 2) + 4 , então tente o seguinte para fazer isso

=IF(A4<1,0,(INT(A4)*2)+4))
    
por 26.08.2018 / 10:59
1

Não há nenhuma função interna do Excel para IF com várias condições. No entanto, você pode usar várias instruções IF aninhadas. Um caso muito básico:

IF(condition1,IF(condition2,value_if_true2,value_if_false2),value_if_false1)

alternativamente:

IF(condition1,value_if_truet1,IF(condition2,value_if_true2,value_if_false2))

Como você pode ver na instrução IF , você pode substituir value_if_true ou value_if_false ou ambos por outra instrução IF e, assim, continuar as condições de aninhamento para obter o resultado desejado.

Bom exemplo com explicação aqui:

link

    
por 23.08.2018 / 16:48
1

Você não precisa da função AND.

=IF(A4>=3,10,IF(A4>=2,8,IF(A4>=1,6,0)))
    
por 26.08.2018 / 10:08