Функция ЗАПРОС с условием ИЛИ > Таблица запроса, выберите E, где C содержит Cell1 *OR* Cell2 limit 1

Я пытаюсь использовать оператор ИЛИ в следующем запросе.

По идее в ячейке будет отображаться пробег от ветки. Пользователь может выбрать ветку либо на C12, либо на E12, и в ячейке отобразится пробег из таблицы. Моим следующим шагом было бы сделать оператор if, но мне интересно, возможно ли заставить его работать так

=iferror(query(BranchesHrsKms, "Select E where C matches'"&C12&"' or C matches'"&E12&"'limit 1",0),"")`

Что делает текущий код: в основном просто запускает эту часть

C matches'"&E12&"'limit 1",0),"")

Но только когда в С12 что-то есть.

Любое руководство приветствуется

Обновлять: Это могу работает с If и ISBLANK

=IF(ISBLANK(C16)=FALSE, iferror(query(BranchesHrsKms, 
"Select E where C matches'"&C16&"' limit 1",0),""), 
iferror(query(BranchesHrsKms, "Select E where C matches'"&E16&"' limit 1",0),""))

Копия листа для игры: https://docs.google.com/spreadsheets/d/1fn5xzWi47xcgnQiDk5v_t1UDtIF6gHKGB4WoblbT3-Y/edit#gid=686684908

Обратите внимание, что в Excel нет функции QUERY, поэтому я удалил этот тег.

BigBen 21.03.2022 20:51
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
1
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Не хватает места перед limit

=iferror(query(BranchesHrsKms, "Select E where C contains '"&C12&"' or C contains '"&E12&"' limit 1",0),"")
Ответ принят как подходящий

пытаться:

=IFERROR(QUERY(BranchesHrsKms, 
 "select E 
  where C matches '.*"&TEXTJOIN(".*|.*", 1, C12, E12)&".*' 
  limit 1", ))

Обновить:

=INDEX(IFERROR(1/(1/(
 IFNA(VLOOKUP(C10:C23, BranchCodes!C:E, 3, ))+
 IFNA(VLOOKUP(E10:E23, BranchCodes!C:E, 3, ))))))

Я никогда раньше не использовал TEXTJOIN таким образом, но он запрашивает пробег для ветки STAND, когда выбранная ветка была TA. STAND появляется первым в таблице. Это больше похоже на contains, где TA появляется первым в STAND. На данный момент лучшим рабочим решением является =IF(ISBLANK(C16)=FALSE, iferror(query(BranchesHrsKms, "Select E where C matches'"&C16&"' limit 1",0),""), iferror(query(BranchesHrsKms, "Select E where C matches'"&E16&"' limit 1",0),""))

Matthew Rowlands 21.03.2022 22:13

@MatthewRowlands, можете ли вы поделиться копией своего листа?

player0 21.03.2022 22:15

Готово :) Теперь я разрешил добавить пробег. довольно неуклюжий код, но, кажется, работает нормально.

Matthew Rowlands 21.03.2022 23:15

Ответ @MatthewRowlands обновлен, см. розовую ячейку: docs.google.com/spreadsheets/d/…

player0 21.03.2022 23:38

Гений! Мне явно есть чему поучиться. Я сохраню лист для других, чтобы просмотреть процесс. Спасибо

Matthew Rowlands 21.03.2022 23:43

Другие вопросы по теме