У меня есть запрос, который выполняется в Google Sheets для таблицы, где у пользователя есть отдельный вход, который может изменять значения в логических проверках, чтобы получить ИСТИННЫЙ ЛОЖНЫЙ результат для этой таблицы.Возможно, у пользователя есть выборка, которая возвращает все FALSE для оператора where в запросе.
Вывод, который я получаю, # N / A, я хочу иметь возможность создать исключение, в котором я могу определитьчто он возвращает # N / A и меняет вывод на пустое или «Результаты не найдены».
Мои пользователи не очень разбираются в технологиях, поэтому мне нужно, чтобы он был разборчивым для кого-то без знания или опыта кодирования.
Обычно, когда мне возвращают ошибку из функции в Google Sheets или Excel, я использую функцию =Iferror()
для управления выводом исключения ошибки.Это, похоже, не работает, либо потому, что функция iferror была создана с областью действия, выходящей за пределы = query, либо из-за какой-то другой скрытой структурной проблемы.
FALSE, PIG, $5.50
FALSE, APPLE, $0.50
FALSE, CAR, $25.00
FALSE, HORSE, $20.00
Тогда я подумал, что мог быдобавьте оператор if()
и поместите запрос в логический оператор, проверяя значение «N / A»:
if(query(A:B,"select B where A =TRUE")="#N/A","No results found",(A:B,"select B where A = TRUE"))
Это не сработало.Значение, которое было возвращено, все еще было "# N / A".Поэтому я подумал, что, возможно, тип значения исключения технически не является строковым значением, поэтому он не примет значение, не являющееся строкой # N / A, равным «# N / A», поэтому я обернул первый запросв concatenate()
в попытке перевести его в единственное значение переменной / ячейки.Я знаю, что это работает, превращая запрос, он запускается в единственную строку, если он дает результаты, но делает это:
if(concatenate(query(A:B,"select B where A =TRUE"))="#N/A","No results found",(A:B,"select B where A = TRUE"))
Это все еще возвращает "# N / A"
Я думал, что возможнофактическое значение, которое он отбрасывает, является значением типа NULL, и у него есть некоторые хитрые закулисные махинации, чтобы он отображал «# N / A», когда функция where отфильтровывает все результаты.поэтому я изменил проверяемый параметр в операторе if с "# N / A" на "" следующим образом:
=if(concatenate(query(lookup!Z2:AN,"select Z where AN = TRUE"))="","No results found",query(lookup!Z2:AN,"select Z where AN = TRUE"))
Это по-прежнему возвращает "# N / A"
IЯ подумал, что, возможно, функция isblank()
будет иметь какой-то механизм, который обнаружит, что он пустой, и изменит его на:
=if(ISBLANK(concatenate(query(lookup!Z2:AN,"select Z where AN = TRUE"))),"No results found",query(lookup!Z2:AN,"select Z where AN = TRUE"))
Это также все еще возвращает "# N / A"
I 'м в недоумении.Я ожидаю, что это вызовет у меня исключение, которое я квалифицирую: «Результаты не найдены», но этого никогда не произойдет.Очевидно, я не понимаю природу того, как функция =query()
обрабатывает данные в бэкэнде вещей.Он должен делать что-то на отдельном слое операций или что-то, или иметь совершенно другую область, но как я должен выяснить, что это за переменная / процесс?