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


1

Estou tentando usar um IF função em uma fórmula em MS Excel 2013 , mas toda vez que o IF função ignora a condição que eu escrevi e vai para o valor verdadeiro. Eu chequei meu IF declaração mais e mais, e eu não vejo nada de estranho ou errado.

Esta é a equação que usei:

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

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

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


... F17 faz referência ao célula F17, não a coluna inteira.
— Bob

Eu sei que eu acabei de escrever essa equação como um exemplo, mas no documento é como F1, F2, F3, F4, ....., etc
— faisal60

@ faisal60 você poderia postar uma captura de tela (de alguns valores fictícios se a informação for sensível)?
— Jerry

1
Isso está funcionando para mim. Coloquei alguns valores fictícios e usei o teste =IF(F17>0,"F17 > 0","F17 < 0") e funcionou como pretendido. A fórmula atual mudou positivo / negativo quando verdadeiro / falso.
— Nathan C

2
Isso não é exatamente programação, mas esta regra se aplica de qualquer maneira: Selecione não está quebrado .
— gronostaj

Respostas:


4

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

= SE (F1 & gt; 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 um texto parecido com números.

enter image description here


1
É ainda mais fácil que isso. Na guia Fórmulas, selecione Avaliar Fórmula. Ele guiará você pela fórmula para que você possa ver onde está o erro.
— wbeard52

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 sempre avaliará para TRUE.

enter image description here

A solução é usar o VALUE() função na sua fórmula.

enter image description here

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, cuidado com o fato de que algumas das outras células que você referencia pode conter também números formatados em texto, então ajuste de acordo.


1

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 adivinha:

=G16 + SIGN(F17) * ABS(D17)/100 * G16

1

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.


1
Bem vindo ao Super Usuário. Aqui temos uma política de não incluir assinaturas no conteúdo que você publica. Você poderia editar estes fora?
— Ferrybig
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.