Строковые данные фильтруются в QUERY нормально. Как только это числа или даты, возникает ошибка #Н/Д - запрос не вернул никаких результатов.
Есть широкая таблица
Скачайте себе на гугл диск для теста.
spoilerОна заполнена данными, среди которых есть колонки со временем и числами, которые дают сбой, при попытке их задействовать в фильтрации.
На соседнем листе с таким листом "Test", т.е. на листе "Filter", есть система фильтрации и вывод результата в колонке "BC".
В первой паре листов Test и Filter, формула не задействует каверзный фильтр колонки M, названной SEED с числами. Можно посмотреть как оно работает. Во второй паре задействует... Там формула дописана в конце этим фильтром и не работает.
В третьей паре есть моё временное решение изменять числа на строковые данные, добавляя к числу слово в конце. Так это работает. Этим костылём не воспользуешься при динамических данных, добавляемых через гугл-форму.
Что я упустил? Попытка убрать одинарные кавычки, чтобы обозначить фильтру что это числа, у меня не увенчались успехом. Формула сложноватая.
В конце я оставил лист "FilterWrong" для упражнений с компактной системой фильтров, которая работает, пока в формулу не добавишь фильтр по колонке с датами. С ними такая же проблема.
Вот формула в виде удобном только для понимания. Перед использованием, нужно будет свести её в единую строку.
=QUERY(TestWork!A4:AJ;
"select * where "
& ЕСЛИ(СУММПРОИЗВ(A11:A15); " (C = '" & JOIN("' or C = '";FILTER(B11:B15;A11:A15)) & "')";" C <> '@@@@@'")
& ЕСЛИ(СУММПРОИЗВ(A2:A5); " and (G = '" & JOIN("' or G = '";FILTER(B2:B5;A2:A5)) & "')";" and G <> '@@@@@'")
& ЕСЛИ(СУММПРОИЗВ(C2:C25); " and (M = '" & JOIN(" or M = ";FILTER(D2:D25;C2:C25)) & "')";" and M <> '@@@@@'")
& ЕСЛИ(СУММПРОИЗВ(E3:E); " and (J = '" & JOIN("' or J = '";FILTER(F3:F;E3:E)) & "')";" and J <> '@@@@@'")
)
Добавление следующего пласта формулы, с фильтром по датам, приведёт к ошибке
& ЕСЛИ(СУММПРОИЗВ(G3:G); " and (B = '" & JOIN("' or B = '";FILTER(H3:H;G3:G)) & "')";" and B <> '@@@@@'")
Так же, если данные колонки M будут всё-таки числами, то и добавленая до этого соответственная строка так же обрушит результат.
Как исправить ошибки фильтров чисел и дат в QUERY?
На что стоит обратить внимание в таких недоразумениях?