2つの数値間のデルタの式


9

2つの数値セット間の差分を見つけようとしています。一部の数値は正、一部は負です。

次の式を使用すると、時間の約99%が機能します。

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

ただし、I18およびR18が負の数の場合、が必要I18-R18です。私は複数のIF ANDステートメントを試しましたが、これを正しく行うことができないようです。うまくいけば、誰かが私を正しい方向に導くことができます。


3
I18がゼロの場合にどうするかを言うのを忘れていました。
ブラックウッド、

3
「いつI18、そしてR18負の数であるか、私は必要ですI18-R18」絶対的な違いとしてデルタが欲しいと思った。場合I18である-2R18され-1、あなたの結果があることを行っています-1。すべてのケースで正の数が必要ですか?
JoL、2018年

ない=ABS(I18)-ABS(R18)所望の出力を生成?
Salman A

3
あなたの質問は本当に不明確です。私は答えを見たときあなたが何をしたのかを理解することしかできませんでした(そしてそれがあなたの望んでいることはまだわかりません)。また、AとBの間のデルタは、AとBのA+B両方がゼロの場合にのみ存在できます。
ドミトリーグリゴリエフ2018年

3
デルタは通常、意味の違いである二つの数字の間、常に ABを、そしてあなたが大きい数字のどの意味するのでない限り、あなたは絶対値取るABS(AB)を
ミック

回答:


55

あなただけの差(デルタ)をしたいように聞こえるI18R18、あなたはそれが常にポジティブになりたいですか?

この式はそれを行います:

=ABS(I18-R18)

I18正、負、ゼロのいずれであっても正しい答えが得られます。


3
他の答えがどれほど複雑か見てください!複雑にしないでおく!
スチュワート

11
公平を期すために、質問では、入れ子をIF()正しく機能させる方法を尋ねました。他の回答は、尋ねられた質問に対処しました。しかし、時々、別の道をたどると、適切な場所に早く着くことができます。
スティーブケネディ

@Stewartより公平に言うと、OPが絶対的な違いを望んでいるかどうかは不明です。ToddCurryとPeterHの答えは、絶対的な違いにつながらないOPセットの条件を満たすように見えます。
JoL、2018年

@Stewart、他のほとんどの答えは基本的にこれと同じですが、より基本的な条件ブロックで関数ABS()を開発する点が異なります。しかし、複雑なことは何もありません。
cedbeu

1
@cedbeu間違いなく複雑です。他の答えが読みにくく、パースしにくいからといって、精神的に。
スチュワート

6

オペランドの否定性をチェックする代わりに、結果をチェックします。

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

3
条件は次のように置き換えることもできますI18>R18
Liora Haydont

5

元のコードを単純化しましょう:

If X < 0:
    Z = X + Y

Else X > 0:
    Z = X - Y

ここで、X <0かつY <0の場合、結果は実際にはX + Yではなく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

それが書かれています。

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

上記のように、ゼロケースはありません。データとロジックによっては、等号を追加するだけで、LT / GTコンパレータの1つをLE / GEに変更できる場合があります。


私が何かを誤解していない限り、大きな疑似コードではIf Y<0 {A} Else {B}AとBは同じです。タイプミスはありますか?
カミルドラカリ

3

以下を使用できます。

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

私がこれで確認できる唯一の欠陥は、I18 = 0このために何も設定されていない場合にどうするかです。

とにかく、そのインスタンスに何かを追加したい場合は、以下を参照してください:

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

1

ABSについては知りませんでした。提案するつもりだった

= SQRT((I18-R18)^ 2)


2
平方根の計算は自明ではなく、丸め誤差が発生しやすいことを考えると、最適とは言えません。
David Foerster、

0

これは私のために働きました-> IF(AND(I18 <0、R18 <0)、I18-R18、IF(I18 <0、((R18-I18)*-1)、IF(I18> = 0、I18-R18 )))

これはすべてのシナリオをカバーしています。変数B + ve | + ve + ve | -ve -ve | + ve -ve | -ve


(1)2つのバイナリ(+ /  -)変数の4つの(2²)可能な組み合わせの表は簡単であり、それを示すことはあなたの答えを明確にするために何もしません。この質問のように不明確な質問への回答を投稿する場合は、回答しようとしている質問について説明すると便利です。(2)あなたがしていることが何であれ、あなたの式は不必要に複雑に見えます。それが何をしているのかを説明することは役に立ちます。………………………………………………コメントに返信しないでください。 回答を編集して、より明確で完全なものにします。
スコット

0

xとyの差だけでなく、正または負のデルタ移動が必要な状況(カラーラボの測定値を測定)に遭遇しました。したがって、通常-5マイナス-2 = -3ですが、デルタが実際に正の方向にあったことを示すために-3は、私が探しているものではありません。

= IF(A1> B1、ABS(A1-B1)*-1、ABS(A1-B1))

簡単に言うと、2番目の(新しい)読み取り値が小さい場合、結果は負の移動(つまり* -1)であり、軸の負の側にさらに移動したことがわかります。そうでない場合、2番目の読み取り値が大きい場合、差が正の方向であることを認識して純粋なABS値が機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.