Как построить поисковую форму в гугл листах с запросом ()? - PullRequest
1 голос
/ 27 октября 2019

Запрошенное поведение:
Я хотел бы создать форму поиска в Google Sheets для запроса таблицы, которую я использую в качестве базы данных.

  1. Пользователь должен иметь возможность запрашивать таблицу по нескольким категориям поиска, которые пользователь может вводить в ячейку листа.
  2. Если пользователь не вводит строку поиска, тогда все элементы должны отображаться.
  3. Кроме того, пользователь должен иметь возможность выбирать между поиском «включая ИЛИ» и «исключая И».

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

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

Я создал два поля ввода входного поиска и поле, в котором пользователь может переключаться между «ИЛИ» и «И». Я также создал функцию запроса, которая связывает эти 3 условия поиска. Изменение между поиском «ИЛИ» и «И» работает (с первым подходом).

Первый подход:

=QUERY('Geschäftsvorfälle'!A2:AG1000, "select * WHERE A="&B4&" "&D1&" B='"&B5&"'")

Второй подход:

=QUERY('Geschäftsvorfälle'!A2:AG1000, "select * " &if(B5="Alle",, "WHERE B='"&B5&"'") &if(B4="",, "WHERE A="&B4&""))

Issue
Первый подход работает с поиском «ИЛИ», но возвращает пустой лист, если я использую несколько поисковых запросов. Также выдает ошибку «VALUE», если оставить одно условие поиска пустым. Второй подход выдает ошибку «VALUE», если я использую несколько поисковых терминов, даже если должны быть совпадающие строки.

Есть ли способ заставить этот вид поисковой формы работать в Google Sheets? Если да, возможно ли это сделать с query() и как мне это сделать? Не могли бы вы привести пример скриншотов или кода?

Снимки экрана
Форма поиска:
enter image description here

Комбинированный запрос:
enter image description here

1 Ответ

1 голос
/ 27 октября 2019

пробовать:

=QUERY('Geschäftsvorfälle'!A2:AG, 
 "where "&TEXTJOIN(" "&D1&" ", 1, 
 IF(B4<>"", " A="&B4, ), 
 IF(B5<>"", " B='"&B5&"'", ), 
 IF(B6<>"", " lower(F) contains '"&LOWER(B6)&"'", )), 1)

0

...