Проблема условного оператора IF (), не возвращающая желаемого значения - PullRequest
0 голосов
/ 15 апреля 2019

В настоящее время пишется программа в Excel, которая будет возвращать значение на основе пользовательского ввода.Текущая формула имеет 5 различных вариантов возврата, которые возвращаются в зависимости от выбора числа пользователем.Я использую оператор IF (), встроенный в большее количество операторов IF (), чтобы учесть несколько вариантов ввода.Однако, когда я иду вводить число, выходящее за пределы диапазона первого оператора IF (), я получаю 0, хотя это должно быть другое число.

Для приведенного ниже кода C30 - это ячейка вводаи он должен вернуть .15, если я должен был ввести 25.

=IF(C30<20, 0.35, IF(20<C30<40, 0.15, IF(40<C30<60, 0, IF(60<C30<80, -0.1, IF(80<C30, -0.2, 0)))))

Из логических утверждений он должен возвращать .15, но все, что я получаю, это 0.

Ответы [ 3 ]

4 голосов
/ 15 апреля 2019

Excel не использует 20<C30<40 это будет:

AND(20<C30,C30<40)

Но вы можете сократить это с помощью простого МАТЧА и ВЫБОР:

=CHOOSE(MATCH(C30,{0,20,40,60,80}),0.35,0.15,0,-0.1,-0.2)

Если вы действительно хотите вложенныйесли в дополнительных тестах нет необходимости:

=IF(C30<20,0.35,IF(C30<40,0.15,IF(C30<60,0,IF(C30<80,-0.1,-0.2))))

IF разрешит последовательно и короткое замыкание, как только обнаружит первое ИСТИНА, поэтому ему не нужна другая логика.

1 голос
/ 15 апреля 2019

Проблема здесь заключается в логике, которую вы использовали для оценки того, попадает ли C30 в диапазон чисел.

IF(20<C30<40,...) будет не проверять, находится ли C30 в диапазоне от 20 до 40.

Вместо этого используйте AND(cond1, cond2, ...), чтобы проверить, находятся ли значения в диапазоне:

IF(AND(C30 > 20, C30 < 40), ...)
0 голосов
/ 15 апреля 2019

Заменить такие термины, как:

20<C30<40

на:

AND(20<C30,C30<40)

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...