Formula per delta tra due numeri


9

Sto cercando di trovare il delta tra due serie di numeri. Alcuni numeri sono positivi, altri negativi.

L'uso della seguente formula funziona circa il 99% delle volte:

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

Tuttavia, quando I18e R18sono numeri negativi, ho bisogno I18-R18. Ho provato più IF ANDdichiarazioni, ma non riesco proprio a farlo bene. Spero che qualcuno mi possa guidare nella giusta direzione.


3
Hai dimenticato di dire cosa dovrebbe succedere se I18è zero.
Blackwood,

3
"quando I18e R18sono numeri negativi, ho bisogno di I18-R18" Sei sicuro di voler dire questo? Pensavo volessi il delta come una differenza assoluta. Se I18è -2ed R18è -1, il tuo risultato sarà -1. Non vuoi un numero positivo in tutti i casi?
JoL

Non =ABS(I18)-ABS(R18)produrre l'output desiderato?
Salman A

3
La tua domanda non è molto chiara. Ho potuto capire cosa stavi cercando solo quando ho visto la risposta (e non sono ancora sicuro che sia quello che vuoi). Inoltre, un delta tra A e B può essere solo A+Bse sia A che B sono zero.
Dmitry Grigoryev

3
Il delta di solito indica la differenza tra due numeri, che è sempre A-B , e se non si desidera indicare quale dei numeri è maggiore, si prenderebbe il valore assoluto abs (AB) .
Mick,

Risposte:


55

Sembra che tu voglia solo la differenza (delta) tra I18e R18, e vuoi che sia sempre positiva?

Questa formula lo farà:

=ABS(I18-R18)

Darà la risposta giusta sia I18positiva, negativa o zero.


3
Guarda quanto sono complicate le altre risposte! Mantienilo semplice!
Stewart

11
Per essere onesti, la domanda ha chiesto come far IF()funzionare correttamente il nidificato . Le altre risposte hanno risposto alla domanda che è stata posta. Ma a volte, prendendo una strada diversa ti porterà nel posto giusto più velocemente.
Steve Kennedy,

@Stewart Per essere più equi, non è chiaro se OP vuole la differenza assoluta. Le risposte di ToddCurry e PeterH sembrano soddisfare una condizione del set OP che non porta alla differenza assoluta.
JoL

@Stewart, la maggior parte delle altre risposte sono sostanzialmente le stesse di questa, tranne per il fatto che sviluppano la funzione ABS () in più blocchi condizionali di base. Ma niente di complicato, davvero.
Cedbeu,

1
@cedbeu Complicated, sicuramente. Se non altro perché le altre risposte sono più difficili da leggere e analizzare, mentalmente.
Stewart

6

Invece di verificare la negatività degli operandi, controllare il risultato.

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

3
la condizione potrebbe anche essere sostituita daI18>R18
Liora Haydont

5

Semplifichiamo il tuo codice originale:

If X < 0:
    Z = X + Y

Else X > 0:
    Z = X - Y

Ora dici che quando X <0 e Y <0, vuoi effettivamente che il risultato sia X - Y e non 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

Questo è scritto.

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

Come notato sopra, non hai un caso zero. Potresti essere in grado di cambiare uno dei comparatori LT / GT in LE / GE semplicemente aggiungendo un segno di uguale - a seconda dei tuoi dati e della tua logica.


A meno che non stia leggendo male qualcosa, nello pseudocodice più grande che hai If Y<0 {A} Else {B}ma A e B sono identici. C'è un errore di battitura?
Kamil Drakari,

3

È possibile utilizzare quanto segue:

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

L'unico difetto che posso vedere con questo è, cosa fai in un'istanza in cui I18 = 0non hai nulla per questo.

Comunque se desideri aggiungere qualcosa per quell'istanza, vedi sotto:

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

1

Non sapevo dell'ABS. Stavo per suggerire

= SQRT ((I18-R18) ^ 2)


2
Considerando che il calcolo delle radici quadrate non è banale e soggetto a errori di arrotondamento, è tutt'altro che ottimale.
David Foerster,

0

Questo ha funzionato per me -> IF (AND (I18 <0, R18 <0), I18-R18, IF (I18 <0, ((R18-I18) * - 1), IF (I18> = 0, I18-R18 )))

Questo copre tutti gli scenari: variabile A | Variabile B + ve | + ve + ve | -ve -ve | + ve -ve | -ve


(1) La tabella delle quattro (2²) possibili combinazioni di due variabili binarie ( + /  -) è banale e mostrarla non fa nulla per chiarire la tua risposta. Se hai intenzione di pubblicare una risposta a una domanda poco chiara come questa, è utile spiegare a quale domanda pensi di rispondere. (2) Qualunque cosa tu stia facendo, la tua formula sembra inutilmente complessa. Spiegare cosa sta facendo sarebbe utile. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Per favore non rispondere nei commenti; modifica la  tua risposta per renderla più chiara e completa.
Scott,

0

Mi sono appena imbattuto in una situazione (misurazione delle letture di laboratorio a colori) in cui non ho semplicemente bisogno della differenza tra x & y ma del movimento delta positivo o negativo. Quindi normalmente -5 meno -2 = -3 ma voler mostrare che il delta era in realtà nella direzione positiva -3 non è quello che sto cercando:

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

In poche parole se la seconda lettura (più recente) è più piccola, so che il risultato è un movimento negativo (quindi * -1) e si è spostato più in basso sul lato negativo dell'asse. Altrimenti se la seconda lettura è più grande, il valore di ABS puro funziona sapendo che la differenza è nella direzione positiva.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.