O Excel tem algo como um comutador de 3 vias?

5

Em suma, se alguém quisesse fazer um switch IF

a) se A < 0,5 ... B = 10.
b) se A > = 0,5 ... B = 15.
c) se A > 1,0 ... B = 20.

Como alguém faria isso?

    
por Rook 03.02.2012 / 13:05

8 respostas

6

Isso funcionará como uma função SWITCH: -

=CHOOSE(IF(A1<0.5,1,IF(AND(A1>=0.5,A1<=1),2,3)),10,15,20)

Mas isso é internamente fazendo Nested IF.

A melhor forma de utilizar o interruptor de 3 vias é a seguinte: -

=IF(A1<0.5,10,IF(AND(A1>=0.5,A1<=1),15,20))
    
por 03.02.2012 / 18:03
6

Você pode aninhar expressões "if" assim:

=IF(A1<0.5,10,IF(AND(A1>=0.5,A1<=1),15,IF(A1>1,20,"Something else")))

(adicionei A1 < = 1 caso contrário, porque A > 1,0 implica A também > = 0,5)

    
por 03.02.2012 / 13:17
5

Se é a maneira mais fácil de fazer isso.

Um método mais flexível para calcular é explorar o uso de True = 1 do Excel. Supondo que o valor esteja em A1:

=((A1<0.5)*10)+((A1>=0.5)*15)+((A1>1)*20)

Isso permitirá que você adicione qualquer quantidade de condições e tire você dos IFs aninhados.

Isso funciona porque, em cada agrupamento, a avaliação é uma função lógica que retorna True ou False, isto é, (A1<0.5) retornará True se A1 for menor que 0.5 . O Excel usa o valor de 1 quando True é usado em uma função aritmética.

O exemplo acima que eu coloquei não é exatamente correto, alguns números irão gerar True para dois grupos diferentes. O grupo intermediário precisaria de uma função AND() para limitar como:

AND(A1>=0.5,A1<=1)
    
por 03.02.2012 / 20:01
2

Dê uma olhada aqui se este link ajuda

Uma função típica de switch seria semelhante, =switch(condition, outcome1, outcome2, outcome3...), for eg, =switch(3,"good","average","poor") retornaria "ruim" quando usado.

    
por 03.02.2012 / 13:20
2

A solução mais curta deve ser:

=IF(A1<0.5,10,IF(A1<=1,15,20))

Devido à primeira parte, o AND na segunda parte é desnecessário.

    
por 07.07.2015 / 13:02
2

A função de troca está agora disponível no Excel 2016 / Office 365

    SWITCH (expressão, valor1, resultado1, [padrão ou valor2, resultado2],… [padrão ou valor3, resultado3])

example:
=SWITCH(A1,0,"FALSE",-1,"TRUE","SORT OF")

Microsoft - Suporte técnico

    
por 09.08.2016 / 13:25
1

Para definir um valor com base na cadeia de entrada, ou seja, definir valor de célula = 2 se C5="Provável" OU definir valor de célula = 3 se C5 = Improvável OU definir valor de célula = 2 se C5="Bastante provável". então a fórmula será como abaixo:

SE (C5="Provável", 1, (SE (C5="Improvável", 3, (SE (C5="Muito Provável", 2)))))

    
por 04.06.2015 / 12:33
0

Não há função de troca no Excel. Para sua pergunta, os ifs aninhados são a melhor solução.

Eu encontrei esta página procurando por uma verdadeira função switch no Excel. Embora não exista, você pode emular essa funcionalidade com uma tabela de consulta e a função VLOOKUP . Aqui está um exemplo ...

Digamos que queremos calcular o subtotal de cada item em um pedido. Primeiro, criamos a tabela de pesquisa, digamos que seja nas células A1 a B4:

Product  Price
Candy    1
Apples   15
Chicken  21

Agora, digamos que tenhamos o recibo do fornecedor nas chamadas D1 a E5:

Product  Quantity
Candy          25
Apples         15
Chicken        10
-----------------
Tax           $37
Total        $497

Podemos adicionar uma coluna de subtotal usando essa fórmula na célula F2:

=E2 * VLOOKUP(D2, $A$2:$B$4, 2, FALSE)

Isso levará a quantidade e multiplicará pelo preço desse produto, produzindo o subtotal.

Para explicar a função VLOOKUP um pouco mais, procuramos o nome do produto ( D2 ) em nossa tabela de consulta de preços ( $A$2:$B$4 ), depois pegamos a segunda coluna ( 2 ) e queremos apenas correspondências exatas ( FALSE ).

    
por 05.06.2015 / 14:46