= if () função não está funcionando como deveria ser

1

Estou tentando usar uma função IF em uma fórmula no MS Excel 2013 , mas toda vez que a função IF ignora a condição que eu escrevi e vai para o valor verdadeiro. Eu verifiquei minha instrução IF várias vezes, e não vejo nada estranho ou errado.

Esta é a equação que usei:

=IF(F17>0,(ABS(D17)/100*G16)+G16,(G16-((ABS(D17)/100)*G16)))

Primeiro, ele verifica o valor da coluna F para ver se ele é maior ou menor que 0 , então faz algumas contas baseadas no IF sendo verdadeiro ou falso.

O problema é que sempre calcula o valor verdadeiro mesmo se F17 contiver um número negativo.

    
por faisal60 24.05.2013 / 17:40

4 respostas

4

Solucione a fórmula passo a passo. Comece com um simples

= SE (F1 > 0, VERDADEIRO, FALSO)

e copie para baixo. Se o resultado mostrar TRUE para todas as linhas, seus dados de origem serão o problema. Você pode ter texto que se parece com números.

    
por 25.05.2013 / 06:38
2

Verifique se seus dados estão formatados como um valor numérico ou como texto. Se estiver formatado como texto, a comparação F17>0 será sempre avaliada como TRUE .

AsoluçãoalternativaéusarafunçãoVALUE()emsuafórmula.

No seu caso, você vai querer usar a seguinte fórmula:

=IF(VALUE(F17)>0,(ABS(D17)/100*G16)+G16,(G16-((ABS(D17)/100)*G16)))

Naturalmente, lembre-se de que algumas das outras células que você mencionou podem conter números formatados em texto, portanto, ajuste de acordo.

    
por 26.05.2013 / 17:49
1

A complexidade desnecessária tende a dificultar as coisas. Para começar, você tem um par de parênteses que você não precisa. (E, a propósito, os espaços facilitam a leitura das coisas.)

                                     ↓                        ↓
=IF(F17>0,  (ABS(D17)/100*G16)+G16,  (G16-((ABS(D17)/100)*G16)) )

é equivalente a

=IF(F17>0,  (ABS(D17)/100*G16)+G16,   G16-((ABS(D17)/100)*G16)  )

Um rearranjo trivial produz

=IF(F17>0, G16 + (ABS(D17)/100*G16), G16 - ((ABS(D17)/100)*G16) )

e neste momento os termos comuns estão saltando da página. O acima pode ser simplificado para

=G16 + IF(F17>0, (ABS(D17)/100*G16), -((ABS(D17)/100)*G16) )

e, portanto, para

=G16 + IF(F17>0, 1, -1) * (ABS(D17)/100)*G16

e agora outro par de parênteses se torna redundante:

=G16 + IF(F17>0,1,-1) * ABS(D17)/100 * G16

E adivinhe:

=G16 + SIGN(F17) * ABS(D17)/100 * G16
    
por 21.06.2015 / 14:37
1

O F17 pode não estar no formato numérico correto, sugiro que você escreva =VALUE(F17)>0 em algum lugar da sua planilha. Se o resultado for falso, significa que seu número em F17 foi armazenado como um texto.

    
por 25.04.2016 / 17:46