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

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 направлены на выполнение условия набора OP, которое не приводит к абсолютной разнице.
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")))
PeterH
источник
1

Я не знал об АБС. Я собирался предложить

= SQRT ((I18-Р18) ^ 2)

дзиндзя
источник
2
Учитывая, что вычисление квадратных корней нетривиально и подвержено ошибкам округления, это менее чем оптимально.
Дэвид Фёрстер
0

Это сработало для меня -> IF (И (I18 <0, R18 <0), I18-R18, IF (I18 <0, ((R18-I18) * - 1), IF (I18> = 0, I18-R18 )))

Это охватывает все сценарии: переменная A | Переменная B + ve | + ве + ве | -ve -ve | + ве-ве | -ve

user1001108
источник
(1) Таблица из четырех (2²) возможных комбинаций двух двоичных ( + /  -) переменных тривиальна, и ее показ ничего не дает для уточнения вашего ответа. Если вы собираетесь опубликовать ответ на вопрос, столь же неясный, как этот, полезно объяснить, на какой вопрос, по вашему мнению, вы отвечаете. (2) Что бы вы ни делали, ваша формула кажется излишне сложной. Объяснение того, что он делает, было бы полезно. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Пожалуйста, не отвечайте в комментариях; отредактируйте  свой ответ, чтобы сделать его более понятным и полным.
Скотт
0

Я просто столкнулся с ситуацией (измеряя цветовые показания лаборатории), где мне нужна не просто разница между x & y, а положительное или отрицательное дельта-движение. Поэтому обычно -5 минус -2 = -3, но желание показать, что дельта на самом деле была в положительном направлении, -3 - это не то, что я ищу:

= ЕСЛИ (A1> B1, ABS (A1-B1) * - 1, ABS (A1-B1))

Проще говоря, если 2-е (более новое) чтение меньше, я знаю, что результатом является отрицательное движение (поэтому * -1), и оно сместилось дальше вниз по отрицательной стороне оси. В противном случае, если второе значение больше, значение чистого ABS работает, зная разницу в положительном направлении.

Томас Мухард
источник