Fórmula para delta entre dois números

9

Estou tentando encontrar o delta entre dois conjuntos de números. Alguns números são positivos, outros negativos.

O uso da seguinte fórmula funciona em 99% das vezes:

=IF(I18<0,I18+R18,IF(I18>0,I18-R18))

No entanto, quando I18e R18são números negativos, eu preciso I18-R18. Eu tentei várias IF ANDdeclarações, mas simplesmente não consigo entender isso direito. Espero que alguém possa me guiar na direção certa.

Dave
fonte
3
Você esqueceu de dizer o que deve acontecer se I18for zero.
Blackwood
3
"quando I18e R18são números negativos, eu preciso I18-R18" Tem certeza de que está falando sério? Eu pensei que você queria o delta como uma diferença absoluta. Se I18é -2e R18é -1, seu resultado será -1. Você não quer um número positivo em todos os casos?
JoL
Não =ABS(I18)-ABS(R18)produzir o resultado desejado?
Salman A
3
Sua pergunta é realmente incerta. Eu só conseguia entender o que você estava procurando quando vi a resposta (e ainda não tenho certeza de que é isso que você deseja). Além disso, um delta entre A e B só pode ser A+Bse A e B forem zero.
Dmitry Grigoryev
3
O delta geralmente significa a diferença entre dois números, que é sempre A-B , e, a menos que você queira indicar qual dos números é maior, você deve usar o valor absoluto abs (AB) .
Mick

Respostas:

55

Parece que você só quer a diferença (delta) entre I18e R18, e você quer que ela seja sempre positiva?

Esta fórmula fará o seguinte:

=ABS(I18-R18)

Dará a resposta certa I18, positiva, negativa ou nula.

Steve Kennedy
fonte
3
Veja como as outras respostas são complicadas! Mantenha simples!
Stewart
11
Para ser justo, a pergunta foi feita como fazer o aninhado IF()funcionar corretamente. As outras respostas abordaram a pergunta que foi feita. Mas, às vezes, seguir um caminho diferente o levará ao lugar certo mais rapidamente.
Steve Kennedy
@ Stewart Para ser mais justo, não está claro se a OP quer a diferença absoluta. As respostas de ToddCurry e PeterH parecem preencher uma condição definida pelo OP que não leva à diferença absoluta.
JoL
@ Stewart, muitas outras respostas são basicamente as mesmas que essa, exceto que elas desenvolvem a função ABS () em blocos condicionais mais básicos. Mas nada complicado, realmente.
cedbeu
11
@cedbeu Complicado, definitivamente. Se apenas porque as outras respostas são mais difíceis de ler e analisar, mentalmente.
Stewart
6

Em vez de verificar se há negatividade nos operandos, verifique o resultado.

=IF(I18-R18>0,I18-R18,R18-I18)
JoL
fonte
3
a condição também pode ser substituída porI18>R18
Liora Haydont
5

Vamos simplificar o seu código original:

If X < 0:
    Z = X + Y

Else X > 0:
    Z = X - Y

Agora você diz que, quando X <0 e Y <0, na verdade deseja que o resultado seja X - Y e não X + Y. OK.

If Y < 0:
   If X < 0:
      Z = X - Y
   Else:
      Z = X + Y
Else:
   If X < 0:
      Z = X - Y
   Else:
      Z = X + Y

Isso está escrito.

=IF(R18<0,IF(I18<0,I18-R18,I18+R18),IF(I18<0,I18-R18,I18+R18))

Como observado acima, você não tem um caso zero. Você pode alterar um dos comparadores LT / GT para LE / GE simplesmente adicionando um sinal de igual - dependendo dos seus dados e lógica.

Todd Curry
fonte
A menos que eu esteja interpretando mal alguma coisa, no pseudocódigo maior você tem, If Y<0 {A} Else {B}mas A e B são idênticos. Existe um erro de digitação?
Kamil Drakari
3

Você pode usar o abaixo:

=IF(AND(I18<0,R18<0),I18-R18,IF(I18<0,I18+R18,IF(I18>0,I18-R18)))

A única falha que posso ver com isso é: o que você faz em um exemplo em que I18 = 0você não tem nada definido para isso.

De qualquer forma, se você deseja adicionar algo para essa instância, veja abaixo:

=IF(AND(I18<0,R18<0),I18-R18,IF(I18<0,I18+R18,IF(I18>0,I18-R18,"IF I18 = zero goes here")))
PeterH
fonte
1

Eu não sabia sobre ABS. Eu ia sugerir

= SQRT ((I18-R18) ^ 2)

Jinja
fonte
2
Considerando que o cálculo de raízes quadradas não é trivial e propenso a erros de arredondamento, isso é menos do que ideal.
David Foerster
0

Isso funcionou para mim -> IF (AND (I18 <0, R18 <0), I18-R18, IF (I18 <0, ((R18-I18) * - 1), IF (I18> = 0, I18-R18 )))

Isso abrange todos os cenários: Variável A | Variável B + ve | + ve + ve | -ve -ve | + ve-ve | -ve

user1001108
fonte
(1) A tabela das quatro (2²) combinações possíveis de duas variáveis binárias ( + /  -) é trivial e não mostra nada para esclarecer sua resposta. Se você postar uma resposta para uma pergunta tão clara quanto essa, é útil explicar qual pergunta você acha que está respondendo. (2) O que quer que você esteja fazendo, sua fórmula parece desnecessariamente complexa. Explicar o que está fazendo seria útil. ……………………………………………… Por favor, não responda nos comentários; edite  sua resposta para torná-la mais clara e completa.
22419 Scott
0

Acabei de encontrar uma situação (medindo as leituras de laboratório em cores) em que não preciso apenas da diferença entre x e y, mas do movimento delta positivo ou negativo. Então, normalmente -5 menos -2 = -3, mas querer mostrar que o delta estava realmente na direção positiva -3 não é o que estou procurando:

= SE (A1> B1, ABS (A1-B1) * - 1, ABS (A1-B1))

Simplificando, se a segunda leitura (mais recente) for menor, eu sei que o resultado é um movimento negativo (então * -1) e se moveu ainda mais para o lado negativo do eixo. Caso contrário, se a segunda leitura for maior, o valor puro do ABS funcionará sabendo que a diferença está na direção positiva.

Thomas Muchard
fonte