Formel für Delta zwischen zwei Zahlen

9

Ich versuche, das Delta zwischen zwei Zahlenreihen zu finden. Einige Zahlen sind positiv, andere negativ.

Die Verwendung der folgenden Formel funktioniert in etwa 99% der Fälle:

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

Wenn jedoch I18und R18sind negative Zahlen, ich brauche I18-R18. Ich habe mehrere IF ANDAussagen ausprobiert , kann dies aber nicht richtig verstehen. Hoffentlich kann mich jemand in die richtige Richtung führen.

Dave
quelle
3
Sie haben vergessen zu sagen, was passieren soll, wenn I18Null ist.
Blackwood
3
"Wann I18und R18sind negative Zahlen, ich brauche I18-R18" Bist du sicher, dass du das meinst? Ich dachte, Sie wollten das Delta als absoluten Unterschied. Wenn I18ist -2und R18ist -1, wird Ihr Ergebnis sein -1. Wollen Sie nicht in allen Fällen eine positive Zahl?
JoL
Erzeugt =ABS(I18)-ABS(R18)die gewünschte Ausgabe?
Salman A
3
Ihre Frage ist wirklich unklar. Ich konnte nur verstehen, wonach du gesucht hast, als ich die Antwort sah (und ich bin mir immer noch nicht sicher, ob du das willst). Auch ein Delta zwischen A und B kann nur sein, A+Bwenn sowohl A als auch B Null sind.
Dmitry Grigoryev
3
Das Delta bedeutet normalerweise die Differenz zwischen zwei Zahlen, die immer A-B ist. Wenn Sie nicht angeben möchten, welche der Zahlen größer ist, nehmen Sie den Absolutwert abs (AB) .
Mick

Antworten:

55

Es hört sich so an, als ob Sie nur den Unterschied (Delta) zwischen I18und R18wollen und möchten, dass er immer positiv ist?

Diese Formel wird das tun:

=ABS(I18-R18)

Es gibt die richtige Antwort, ob I18positiv, negativ oder null.

Steve Kennedy
quelle
3
Schauen Sie, wie kompliziert die anderen Antworten sind! Halte es einfach!
Stewart
11
Um fair zu sein, wurde die Frage gestellt, wie die verschachtelten Funktionen IF()korrekt funktionieren. Die anderen Antworten betrafen die gestellte Frage. Aber manchmal bringt Sie ein anderer Weg schneller zum richtigen Ort.
Steve Kennedy
@Stewart Um fairer zu sein, ist es unklar, ob OP den absoluten Unterschied will. Die Antworten von ToddCurry und PeterH scheinen eine Bedingung des OP-Sets zu erfüllen, die nicht zum absoluten Unterschied führt.
JoL
@Stewart, die meisten anderen Antworten sind im Grunde die gleichen wie diese, außer dass sie die Funktion ABS () in grundlegenderen bedingten Blöcken entwickeln. Aber eigentlich nichts kompliziertes.
Cedbeu
1
@cedbeu Auf jeden Fall kompliziert. Wenn auch nur, weil die anderen Antworten mental schwerer zu lesen und zu analysieren sind.
Stewart
6

Überprüfen Sie das Ergebnis, anstatt die Operanden auf Negativität zu überprüfen.

=IF(I18-R18>0,I18-R18,R18-I18)
JoL
quelle
3
Die Bedingung könnte auch ersetzt werden durchI18>R18
Liora Haydont
5

Vereinfachen wir Ihren ursprünglichen Code:

If X < 0:
    Z = X + Y

Else X > 0:
    Z = X - Y

Jetzt sagen Sie, wenn X <0 und Y <0 ist, möchten Sie tatsächlich, dass das Ergebnis X - Y und nicht X + Y ist. 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

Das steht geschrieben.

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

Wie oben erwähnt, haben Sie keinen Nullfall. Möglicherweise können Sie einen der LT / GT-Komparatoren in LE / GE ändern, indem Sie einfach ein Gleichheitszeichen hinzufügen - abhängig von Ihren Daten und Ihrer Logik.

Todd Curry
quelle
Wenn ich nichts falsch verstehe, haben Sie im größeren Pseudocode If Y<0 {A} Else {B}nur A und B, die identisch sind. Gibt es einen Tippfehler?
Kamil Drakari
3

Sie können Folgendes verwenden:

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

Der einzige Fehler, den ich dabei sehen kann, ist, was Sie in einem Fall tun, in dem I18 = 0Sie nichts dafür eingestellt haben.

Wenn Sie etwas für diese Instanz hinzufügen möchten, siehe unten:

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

Ich wusste nichts über ABS. Ich würde vorschlagen

= SQRT ((I18-R18) ^ 2)

Jinja
quelle
2
Wenn man bedenkt, dass die Berechnung von Quadratwurzeln nicht trivial und anfällig für Rundungsfehler ist, ist dies nicht optimal.
David Foerster
0

Dies funktionierte für mich -> IF (UND (I18 <0, R18 <0), I18-R18, IF (I18 <0, ((R18-I18) * - 1), IF (I18> = 0, I18-R18) )))

Dies umfasst alle Szenarien: Variable A | Variable B + ve | + ve + ve | -ve -ve | + ve -ve | -ve

user1001108
quelle
(1) Die Tabelle der vier (2²) möglichen Kombinationen von zwei binären ( + /  -) Variablen ist trivial und zeigt nichts, um Ihre Antwort zu verdeutlichen. Wenn Sie eine Antwort auf eine so unklare Frage wie diese veröffentlichen möchten, ist es hilfreich zu erklären, welche Frage Sie Ihrer Meinung nach beantworten. (2) Was auch immer Sie tun, Ihre Formel scheint unnötig komplex zu sein. Es wäre hilfreich zu erklären, was es tut. …………………………………………………………………………………………………………………………………………………………………………………………………………………… Bearbeiten Sie  Ihre Antwort, um sie klarer und vollständiger zu gestalten.
Scott
0

Ich bin gerade auf eine Situation gestoßen (Messung der Farblaborwerte), in der ich nicht nur den Unterschied zwischen x und y, sondern auch die positive oder negative Delta-Bewegung benötige. Normalerweise ist -5 minus -2 = -3, aber ich möchte zeigen, dass das Delta tatsächlich in der positiven Richtung -3 liegt, ist nicht das, wonach ich suche:

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

Einfach ausgedrückt, wenn der 2. (neuere) Messwert kleiner ist, weiß ich, dass das Ergebnis eine negative Bewegung (also * -1) ist und sich weiter nach unten auf der negativen Seite der Achse bewegt hat. Andernfalls funktioniert der reine ABS-Wert, wenn der zweite Messwert größer ist, da der Unterschied in positiver Richtung liegt.

Thomas Muchard
quelle