Я пытаюсь запустить простую формулу в Excel:

=IF(V3>419, "Pass", IF(V3>459, "Merit", IF(V3>499, "Dist", IF(V3>519, "Dist*","Fail"))))

У меня есть 2 столбца; В целом и класс

Overall     Grade
70          Fail
220         Fail
420         Pass

Должен быть более простой способ?

2 ответа2

2

Итак, основываясь на ваших комментариях, вы хотите знать, почему эта формула не работает, а затем, во-вторых, можно ли ее упростить?

Это не работает, потому что все, что считается заслугой, расстаться или расстаться * выше 419, и, следовательно, считается пропуском.

Ваша формула оценивается слева направо, поэтому, прежде чем она сделает что-либо еще, она проверяет, является ли оценка выше 419. Даже если результат равен 800, он выше, чем 419, поэтому первый тест - ИСТИНА. Excel не думает, что ему нужно продолжать, поэтому он останавливается, называя это Pass.

Если вы выберете ячейку с формулой в ней и перейдете на вкладку Формулы, а затем выберите «Оценить формулу» в разделе «Аудит формул», вы можете просмотреть формулу, чтобы точно узнать, что происходит.


Есть два способа это исправить. Один из способов - заменить текущее состояние с помощью оператора AND

AND(V3>419,V3<459)

Но это неуклюже. Вам лучше просто поменять утверждения:

=IF(V3>519,"Dist*",IF(V3>499,"Dist",IF(V3>459,"Merit",IF(V3>419,"Pass","Fail"))))


Таким образом, если он не достаточно высок для Dist *, он проверит следующее наивысшее и так далее.


К сожалению, для второй части я не могу придумать, как упростить формулу, не усложнив решение.

1

Вы работаете задом наперед, сначала вам нужна самая высокая оценка, в противном случае 1 000 будет проходить с первой, if для "паса", а не для «dist *». Как это:

=IF(V3>519,"Dist*",IF(V3>499,"Dist",IF(V3>459,"Merit",IF(V3>419,"Pass","Fail"))))

В противном случае вам нужно будет вложить ваш if между значениями, который гораздо менее чист, например, =if(419<v3<459,"pass",...

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