Среднее количество листов в Google (avg). Запрос не будет выполнен с ошибкой AVG_SUM_ONLY_NUMERIC
, если какой-либо столбец в наборе данных пуст. Как вы можете преодолеть это?
По сути, это происходит, когда запрос выполняется на динамически сгенерированном наборе данных, поэтому невозможно заранее узнать, какие столбцы пусты. Более того, выходные данные запроса "layout" не должны изменяться, поэтому, если столбец пустой, запрос должен возвращать пустой или 0, как для ошибочного пустого столбца.
Давайте рассмотрим его
Сценарий: лист Google используется для вставки пометок для тестов учащихся.
Когда учащиеся проводят один тест, учитель присваивает ему несколько оценок. Например, одна отметка для письма, другая для понимания и т. Д. c.
В конце листа должны быть построены столбцы, содержащие среднее значение для всех отметок, назначенных в одну и ту же дату.
Например, в приведенном выше листе ( ссылка здесь ) столбцы с маркировкой, указанной 16 декабря (столбцы B, G, M, R, V) следует усреднить в столбце AE.
Благодаря блестящему пользователю Marikamitsos , это достигается с помощью следующего запроса в ячейке AE4
:
=ARRAYFORMULA(QUERY(TRANSPOSE(QUERY(TRANSPOSE(FILTER(B4:Z,B3:Z3=AE3)),
"select "&TEXTJOIN(",", 1, IF(LEN(A4:A),
"avg(Col"&ROW(A4:A)-ROW(A4)+1&")", )))&""),
"select Col2")*1)
Как работает выше?
- Набор данных отфильтрован по дате
- Отфильтрованный набор данных транспонирован и на него запущен
avg
Запрос - Набор данных результата снова запрашивается легко отфильтровывать метки
Все это работает нормально, пока у учащегося нет отметок на определенную дату, как это происходит в ячейке AG4
: у учащегося Боба нет отметок для теста 28 октября, и запрос будет выведите ошибку AVG_SUM_ONLY_NUMERIC
.
Может ли быть ав можно вставить 0 в отфильтрованный набор данных FILTER(B4:Z,B3:Z3=AE3)
, чтобы ТОЛЬКО пустые строки были установлены в 0? Это предотвратит сбой запроса при одновременном изменении макета набора данных. Или может быть способ игнорировать нули в среднем запросе?
ПРИМЕЧАНИЕ: ученики не могут быть оценены с '0' при пропуске теста!