Формула для дельти між двома числами


9

Я намагаюся знайти дельту між двома множинами чисел. Деякі цифри є позитивними, деякі - негативними.

Використання наступної формули працює приблизно 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є -2і R18є -1, ваш результат буде -1. Ви не хочете, щоб позитивна кількість була у всіх випадках?
JoL

Чи =ABS(I18)-ABS(R18)дає бажаний вихід?
Салман А

3
Ваше питання дійсно незрозуміле. Я міг зрозуміти, що ти хотів, коли побачив відповідь (і досі не впевнений, що ти хочеш). Також дельта між A і B може бути лише в тому A+Bвипадку, якщо обидва A і B дорівнюють нулю.
Дмитро Григор’єв

3
Дельта зазвичай означає різницю між двома числами, яка завжди AB , і якщо ви не хочете , щоб показати , які з чисел є більше, ви б абсолютне значення абс (AB) .
Мік

Відповіді:


55

Здається, ви просто хочете, щоб різниця (дельта) між I18і R18, і ви хочете, щоб вона завжди була позитивною?

Ця формула зробить це так:

=ABS(I18-R18)

Це дасть правильну відповідь I18, позитивна, негативна чи нульова.


3
Подивіться, наскільки складні інші відповіді! Не ускладнювати!
Стюарт

11
Справедливості, питання задало питання, як змусити IF()правильно вкладати роботу. Інші відповіді стосувалися питання, яке було задано. Але іноді, пройшовши інший шлях, швидше ви перейдете в потрібне місце.
Стів Кеннеді

@Stewart Щоб бути більш справедливим, незрозуміло, чи хоче ОП абсолютна різниця. Відповіді ToddCurry та PeterH виглядають на виконанні умови, встановленої ОП, яка не призводить до абсолютної різниці.
JoL

@Stewart, більшість інших відповідей в основному однакові, ніж ця, за винятком того, що вони розвивають функцію ABS () у більш основних умовних блоках. Але насправді нічого складного.
cedbeu

1
@cedbeu Складний, безумовно. Хоча б тому, що інші відповіді важче читати та розбирати, подумки.
Стюарт

6

Замість перевірки операндів на негативність перевіряйте результат.

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

3
умова також може бути замінена наI18>R18
Ліора Гайдонт

5

Давайте спростимо ваш вихідний код:

If X < 0:
    Z = X + Y

Else X > 0:
    Z = X - Y

Тепер ви кажете, що коли X <0 і Y <0, ви насправді хочете, щоб результат був X - Y, а не X + Y. ОК.

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 на 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
Враховуючи, що обчислення квадратних коренів нетривіально і схильне до помилок округлення, це менш ніж оптимально.
Девід Фоерстер

0

Це працювало для мене -> ЯКЩО (AND (I18 <0, R18 <0), I18-R18, IF (I18 <0, ((R18-I18) * - 1), IF (I18> = 0, I18-R18 )))

Це охоплює всі сценарії: Змінна A | Змінна B + ve | + ве + ве | -ве -ве | + ве-ве | -ве


(1) Таблиця з чотирьох (2 ²) можливих комбінацій двох двійкових ( + /  -) змінних є тривіальною, і показавши, що вона нічого не робить для уточнення вашої відповіді. Якщо ви збираєтеся опублікувати відповідь на питання настільки неясне, як це, корисно пояснити, на яке питання, на вашу думку, ви відповідаєте. (2) Що б ви не робили, ваша формула здається зайвою складною. Пояснення того, що він робить, було б корисно. ………………………………………………… Будь ласка, не відповідайте на коментарі; відредагуйте  свою відповідь, щоб зробити її більш зрозумілою та повною.
Скотт

0

Я просто зіткнувся з ситуацією (вимірювання показань кольорової лабораторії), коли мені потрібна не просто різниця між x & y, а позитивний чи негативний дельта-рух. Так зазвичай -5 мінус -2 = -3, але хочу показати, що дельта насправді була в позитивному напрямку -3 - це не те, що я шукаю так:

= ЯКЩО (A1> B1, ABS (A1-B1) * - 1, ABS (A1-B1))

Простіше кажучи, якщо 2-е (новіше) читання менше, я знаю, що результат - негативний рух (так * -1) і рухався далі вниз по негативній стороні осі. Якщо інше читання більше, чисте значення АБС працює, знаючи, що різниця знаходиться в позитивному напрямку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.