IFERROR в гугл таблицах. Почему если выбрано первое значение, второе уже не проверяется?

Добрый день.
На мой взгляд, у меня ппц сложная формула в таблице. Я её когда сделал, я сам с себя офигел... Но кое-что не работает так, как нужно...

Суть такая. Есть таблица, там два листа. На одном цены и модели, на другом бланк заказов.
В бланке вводишь модель, таблица автоматом подставляет цену, со второго листа.
Есть несколько вариантов моделей. Вариант выбирается галочкой. Если галочка стоит, то цена подтягивается другая.
Внимание вопрос:
Если я ставлю две галочки, то цена подтягивается по первой, а по второй нет.

На практике:
Модель комода: №001 , петли с доводчиками (галочка), петли с подсветкой (галочка).
На листе с ценами есть четыре цены.
Цена за комод 001
Цена за комод 001 с петлями с доводчиками
Цена за комод 001 с петлями с подсветкой
Цена за комод 001 с петлями с доводчиками и с подсветкой.

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

=IFS(I5 = TRUE, iferror(QUERY(Pricelist!$A:$R,"select R where A like '"&$D5&"'",0),""),
 I6 = TRUE, iferror(QUERY(Pricelist!$A:$S,"select S where A like '"&$D5&"'",0),""),
 I7 = TRUE, iferror(QUERY(Pricelist!$A:$T,"select T where A like '"&$D5&"'",0),""),
 K6 = TRUE, iferror(QUERY(Pricelist!$A:$U,"select U where A like '"&$D5&"'",0),""),
 1*1=1, "")


Нужно как-то сделать так, что-бы если выбрано две галочки, то цену выбирать по последней.... Вопрос, как ? =) Надеюсь я понятно объяснил....
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
Суть в том, что для очереди принятия решения IFS характерна линейность, сводящаяся к принципу "кто первый, тот и решение". Т.е., если вы поменяете строки таким образом, то вы получите нужный результат

K6 = TRUE, iferror(QUERY(Pricelist!$A:$U,"select U where A like '"&$D5&"'",0),""),
I5 = TRUE, iferror(QUERY(Pricelist!$A:$R,"select R where A like '"&$D5&"'",0),""),
I6 = TRUE, iferror(QUERY(Pricelist!$A:$S,"select S where A like '"&$D5&"'",0),""),
I7 = TRUE, iferror(QUERY(Pricelist!$A:$T,"select T where A like '"&$D5&"'",0),""),


5ffd7efa79ac2644845990.png

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

Идеальным решением можно предположить селектор: это когда все решения имеют однозначные веса, вне зависимости от очереди.

  • I5 = TRUE- это 1
  • I6 = TRUE - это 2
  • I7 = TRUE - это 5
  • K6 = TRUE - это 9


Вам нужно проверить, если сумма всех проверок 1, то включен только I5, если 3 - I5 и I6, если 12 - I5 и I6 и K6 и т.п. Теперь вы можете выбирать решение по вкусу - вы знаете все варианты.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ForestAndGarden
@ForestAndGarden
Тостер вам не Яндекс! Задавайте вопросы грамотно.
Формула написана под переключатели (radio box), а не флажки (check box).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы