Запрос двух отфильтрованных диапазонов не отображает никаких результатов, если в одном отфильтрованном диапазоне нет совпадений - PullRequest
2 голосов
/ 29 мая 2020

Я пытаюсь запросить два отфильтрованных диапазона, чтобы получить комбинированное среднее значение:

=QUERY({FILTER(Filtered Range #1);FILTER(Filtered Range #2)},  
"select avg(Col2)    
label avg(Col2)' ' ", 0)

Этот запрос отлично работает, ЗА ИСКЛЮЧЕНИЕМ случаев, когда любой из этих фильтрованных диапазонов не имеет совпадений, и в этом случае весь запрос вернет # ЗНАЧ! даже не запрашивая совпадения другого диапазона.

Есть ли способ обойти это? Я пробовал включать операторы IFERROR в разные места. Я пробовал усреднить два отдельных запроса, но усреднение двух средних значений не идеально.

Вот мой Пример рабочего листа .

Посмотрите, как нет совпадений для FILTER Условия 1 в листе 2018, весь QUERY не возвращается, даже если есть совпадения в листе 2019.

Любая помощь приветствуется! Спасибо!

1 Ответ

1 голос
/ 20 июня 2020

Заключите FILTER(...) в IFNA(FILTER(...), SPLIT(REPT(",", N), ",", True, False)), где N - количество столбцов, которые должны быть возвращены FILTER.

Это SPLIT даст вам фиктивную {"", "", ..., ""} - N столбцов пустых ячейки, которые можно легко игнорировать в QUERY.

Это будет выглядеть примерно так:

=QUERY(
  {
    IFNA(FILTER(Filtered Range #1), SPLIT(REPT(",", 2), ",", True, False));
    IFNA(FILTER(Filtered Range #2), SPLIT(REPT(",", 2), ",", True, False))
  },
  "select avg(Col2)
   where Col1 is not null
   label avg(Col2) ''",
  0
)
...