Я искал вокруг, но не могу получить функцию IF с 4 диапазонами значений, работающими в моей электронной таблице.

Мне нужна функция IF, которая возвращает следующие значения:

  • 0 если число находится между 0 и чуть ниже 1 (то есть <1).
  • 6 если число находится между 1 и ниже 2.
  • 8 если число находится между 2 и ниже 3.
  • 10 если число от 3 до 4.

Изменить: =IF(A4>=3,10,IF(AND(A4>=2,P4<3),8,IF(A4>=1,6,0)))

5 ответов5

3

Для описываемого вами случая решение INDEX/MATCH предоставленное cybernetic.nomad, является, вероятно, самым простым. Если числа всегда точно соответствуют описанным вами, то ответ Криса Роджерса еще проще.

Я попытаюсь ответить на более общий вопрос о том, существует ли способ проверки нескольких условий в одной функции без вложения нескольких функций IF . Функция IFS , которая, как мне кажется, была введена в Excel 2016, позволяет вам это делать.

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

=IFS(A4<0,NA(),A4<1,0,A4<2,6,A4<3,8,A4<4,10,TRUE,NA())

Функция выше будет:

  • Верните # N/A, если A4 меньше 0 (вы не сказали, что должно произойти в этом случае).
  • Верните 0, если A4 меньше 1 (A4 также должно быть> = 0, иначе предыдущий тест был бы верным).
  • Вернуть 6, если A4 меньше 2 (а также> = 1).
  • Вернуть 8, если A4 меньше 3 (а также> = 2).
  • Вернуть 10, если A4 меньше 4 (а также> = 3).
  • В противном случае верните # N/A.

В этом случае вы можете пропустить последние два аргумента (,TRUE,NA()), так как NA() будет возвращено, если не выполнено ни одно из условий.

2

INDEX/MATCH может сделать это достаточно легко. Предполагая, что значение для проверки находится в A4:

=INDEX({0,6,8,10},MATCH(A4,{0,1,2,3,4}))

(обратите внимание, что это вернет ошибку, если содержание A4 ниже нуля или выше 4)

Краткое объяснение (по просьбе Фиксера)

MATCH(A4,{0,1,2,3,4}) будет ранжировать значение в A4 в массиве {0,1,2,3,4} , поэтому любое значение, такое, что 0 <= A4 < 1 , вернет 1; значение, такое что 1 <= A4 < 2 , вернет 2; и так далее.

INDEX({0,6,8,10},... примет значение, полученное из MATCH и вернет соответствующее значение из массива {0,6,8,10} , поэтому, если MATCH вернет 1 , INDEX вернет (в этом случае) 0 ; если MATCH возвращает 2 , INDEX вернет (в этом случае) 6 и т. д.

Чтобы избежать вышеупомянутой ошибки, массивы могут быть расширены, например:

=INDEX({"too low",0,6,8,10,"too high"},MATCH(A4,{-100,0,1,2,3,4,100}))
2
  • 0, если число находится между 0 и чуть ниже 1 (то есть <1).

  • 6, если число находится между 1 и ниже 2.

  • 8, если число находится между 2 и ниже 3.

  • 10, если число от 3 до 4.

Существует простой способ без INDEX() и MATCH() , IFS() или вложенного IF() .

Глядя на свою формулу, которую вы разместили, вы тестируете ячейку A4 и, кроме 0 , результат соответствует шаблону математического уравнения (the integer of A4 × 2) + 4 поэтому попробуйте выполнить следующее

=IF(A4<1,0,(INT(A4)*2)+4))
1

Вам не нужна функция AND.

=IF(A4>=3,10,IF(A4>=2,8,IF(A4>=1,6,0)))
1

Для IF с несколькими условиями нет встроенной функции Excel. Однако вы можете использовать несколько вложенных операторов IF . Очень простой случай:

IF(condition1,IF(condition2,value_if_true2,value_if_false2),value_if_false1)

альтернативно:

IF(condition1,value_if_truet1,IF(condition2,value_if_true2,value_if_false2))

Как вы можете видеть в операторе IF вы можете заменить либо value_if_true или value_if_false либо оба на другой оператор IF и, таким образом, продолжить условия вложения для достижения желаемого результата.

Хороший пример с объяснением здесь:

https://exceljet.net/formula/nested-if-function-example

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