
Я хотел бы использовать функцию SWITCH, чтобы определить, находится ли число между двумя другими числами, если нет, проверить следующий диапазон чисел и так далее.
Цель состоит в том, чтобы получить ответ в одной ячейке, а затем скопировать формулу в столбец (в данном примере — в столбец дат).
Я попробовал это:
=SWITCH(MONTH(44562);{1;2;3};"T1";{4;5;6};"T2";{7;8;9};"T3";{10;11;12};"T4")
Но функция сливается для каждого элемента массива, и сравнение выполняется по уровню массива:
Я мог бы обойти это, используя функцию IFS, но это потребовало бы написания (и оценки) логической проверки для каждой пары аргументов, а именно этого я хотел бы избежать.
Может быть, я подхожу к этому вопросу не с той стороны, но мне все равно хотелось бы узнать, возможно ли как-то такое использование SWITCH. Заранее спасибо.
Ответы :
Тот, что от Reddy Lutonadio, очень гибкий для списка отдельных значений. Это тот, который я принял.
Вариант Рона Розенфельда очень компактен, эффективен, может работать с действительными числами, но списки должны иметь одинаковую длину.
Мое мнение: используйте IFS для более сложных ситуаций (и, возможно, добавьте функцию LET).
решение1
Вы можете попробовать комбинацию функций LET
, SWITCH
, FILTER
, NOT
и ISERROR
, как показано в формуле ниже.
=LET(x,SWITCH(MONTH(F1),{1,2,3},"T1",{4,5,6},"T2",{7,8,9},"T3",{10,11,12},"T4"),FILTER(x,NOT(ISERROR(x))))
- Функция LET: позволяет вычислить
x
(что является формулой SWITCH) только один раз. - Функции NOT (ISERROR): возвращают строки, не содержащие ошибок.
- Функция ФИЛЬТР: возвращает единственное правильное значение.
решение2
Simpler может быть недостаточно гибким для ваших нужд. Но чтобы вернуть тот же результат, используйте SWITCH
:
=SWITCH(INT((MONTH(A1)-1)/3)+1,1,"T1",2,"T2",3,"T3",4,"T4")
Тот же результат можно получить с помощью более простых формул:
=TEXT(INT((MONTH(A1)-1)/3)+1,"\T0")
=CHOOSE(INT((MONTH(A1)-1)/3)+1,"T1","T2","T3","T4")