1

Я пытаюсь использовать функцию IF в формуле в MS Excel 2013, но каждый раз, когда функция IF игнорирует условие, которое я написал, и переходит к истинному значению. Я проверял свое утверждение IF снова и снова, и я не вижу ничего странного или неправильного.

Это уравнение, которое я использовал:

=IF(F17>0,(ABS(D17)/100*G16)+G16,(G16-((ABS(D17)/100)*G16)))

Сначала он проверяет значение столбца F чтобы увидеть, больше или меньше 0 , а затем выполняет математические расчеты, основываясь на значениях IF равных true или false.

Проблема в том, что он всегда вычисляет истинное значение, даже если F17 содержит отрицательное число.

4 ответа4

4

Устраните неполадки формулы шаг за шагом. Начните с простого

= ЕСЛИ (F1> 0, TRUE, FALSE)

и скопировать вниз. Если результат показывает TRUE для всех строк, то ваши исходные данные являются проблемой. У вас может быть текст, который выглядит как цифры.

2

Проверьте, отформатированы ли ваши данные как числовое значение или как текст. Если он отформатирован как текст, то сравнение F17>0 всегда будет иметь значение TRUE .

Обходной путь должен использовать функцию VALUE() в вашей формуле.

В вашем случае вы захотите использовать следующую формулу:

=IF(VALUE(F17)>0,(ABS(D17)/100*G16)+G16,(G16-((ABS(D17)/100)*G16)))

Конечно, имейте в виду, что некоторые другие ячейки, на которые вы ссылаетесь, могут также содержать числа в текстовом формате, поэтому настройте их соответствующим образом.

1

F17 может иметь неправильный числовой формат, я предлагаю вам написать =VALUE(F17)>0 где-нибудь в вашей электронной таблице. Если результат ложный, то это означает, что ваш номер в F17 был сохранен как текст.

1

Ненужная сложность имеет тенденцию усложнять ситуацию.  Для начала, у вас есть пара скобок, которые вам не нужны.  (И, кстати, пробелы облегчают чтение.)

                                     ↓                        ↓
=IF(F17>0,  (ABS(D17)/100*G16)+G16,  (G16-((ABS(D17)/100)*G16)) )

эквивалентно

=IF(F17>0,  (ABS(D17)/100*G16)+G16,   G16-((ABS(D17)/100)*G16)  )

Тривиальная перегруппировка дает

=IF(F17>0, G16 + (ABS(D17)/100*G16), G16 - ((ABS(D17)/100)*G16) )

и в этот момент общие термины прыгают со страницы.  Вышесказанное можно упростить до

=G16 + IF(F17>0, (ABS(D17)/100*G16), -((ABS(D17)/100)*G16) )

и, следовательно,

=G16 + IF(F17>0, 1, -1) * (ABS(D17)/100)*G16

и теперь другой набор скобок становится излишним:

=G16 + IF(F17>0,1,-1) * ABS(D17)/100 * G16

И угадай что:

=G16 + SIGN(F17) * ABS(D17)/100 * G16

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .