Как использовать AVERAGEIFS в ARRAYFORMULA - PullRequest
1 голос
/ 24 октября 2019

Я пытаюсь использовать AVERAGEIFS внутри ARRAYFORMULA. Глядя на другие вопросы, я пришел к выводу, что это невозможно без использования функции QUERY.

Мое намерение состоит в том, чтобы усреднить значения столбца, если они имеют один и тот же идентификатор.

Я думаю этот вопрос довольно близко подходит к тому, что мне нужно, но я не смог воспроизвести и адаптировать его решение на своем листе.

На этом листе Я показываю ожидаемый результат (я получил его, перетаскивая формулу). Я также безуспешно просмотрел справочник по языку запросов .

Большое спасибо за ваше время и усилия.

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

Вы можете сделать:

=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A; QUERY(A2:B; "select A,avg(B) group by A"); 2; )))

0

2 голосов
/ 24 октября 2019

Таким образом, формула должна быть

=ArrayFormula(iferror(sumif(A2:A,A2:A,B2:B)/countif(A2:A,A2:A)))

this

Обратите внимание, что если бы в столбце точек были какие-либо текстовые значения, это все равно вернуло бырезультат (потому что число будет больше нуля) - вместо этого вы могли бы использовать

=ArrayFormula(if(isnumber(B2:B),(sumif(A2:A,A2:A,B2:B)/countif(A2:A,A2:A)),""))

Если бы у вас была смесь строк с текстом и строк с числами для любого идентификатора, это вернуло бы меньший результат, чем avgили средняя формула. Это ограничение этого метода. Вы не можете поместить дополнительное условие в (этот столбец B должен содержать число), потому что вам потребуются счетчики и счетчики, не поддерживающие массив. Все еще кажется странным, что AFAIK countif и sumif - единственные функции из этого семейства, которые дружественны к массивам, в то время как Countif, Sumifs, Averageif и т. Д. - нет.

...