2016-11-13 2 views
2

Я пытаюсь получить среднее значение всех строк, содержащих данные в моем SourceSheet, которые должны быть согласованы с Fish ID A1:F1 в Sheet1 и A2:A5 в SourceSheet. Я хочу сделать это, используя ARRAYFORMULA(), так как Sheet1!A2:A5 является динамическим и может время от времени содержать другие значения.Динамически поиск и получить средний используя ARRAYFORMULA

До сих пор мне удалось только поиск-и-средняя-часть по:

=AVERAGE(ARRAYFORMULA(HLOOKUP($A2,SourceSheet!A:F,ROW(Items!A$2:F),FALSE)))

Как я достичь результата (смотри ниже), из копирования эту формулу вниз все строки? Заранее спасибо!

Источник данных (SourceSheet)

+------+--------+-----+--------+---------+---------+ | tuna | mullet | cod | salmon | herring | catfish | +------+--------+-----+--------+---------+---------+ | 4 | 3 | 5 | 5 | 5 | 3 | | 5 | 3 | 3 | 1 | 3 | 2 | | 5 | 4 | 4 | 4 | 4 | 4 | | 1 | 2 | 1 | 2 | 3 | 1 | | 3 | 2 | 2 | 2 | 3 | 2 | | 4 | 2 | 4 | 2 | 3 | 3 | | 4 | 2 | 2 | 1 | 2 | 1 | | 4 | 3 | 4 | 3 | 5 | 4 | | 3 | 4 | 4 | 2 | 5 | 1 | | 4 | 3 | 4 | 1 | 2 | 2 | | 2 | 1 | 3 | 1 | 1 | 1 | | 2 | 4 | 3 | 2 | 2 | 2 | | 5 | 3 | 5 | 4 | 5 | 2 | | 4 | 2 | 4 | 2 | 3 | 2 | | 2 | 4 | 4 | 3 | 4 | 2 | | 5 | 4 | 5 | 5 | 3 | 2 | | 3 | 1 | 3 | 3 | 4 | 2 | +------+--------+-----+--------+---------+---------+

То, что я пытаюсь достичь: (Sheet1)

+---------+---------+ | | Average | +---------+---------+ | mullet | 2.76 | | salmon | 2.75 | | herring | 2.73 | | catfish | 2.64 | +---------+---------+

ответ

0

Формула

=ArrayFormula(
MMULT(
hlookup(A2:A5,SourceSheet!A:F, 
TRANSPOSE(FILTER(ROW(SourceSheet!A2:A),LEN(SourceSheet!A2:A))),FALSE), 
n(ISNUMBER((FILTER(ROW(SourceSheet!A2:A),LEN(SourceSheet!A2:A))))) 
) 
/
count(SourceSheet!A2:A) 
) 

Объяснение

AVERAGE - это агрегатная функция. Он может принимать несколько значений, разделенных запятыми, одним массивом или несколькими массивами значений в качестве аргументов и возвращает одно значение. Такие функции, если они используются в формулах массива, возвращают одно значение, поэтому, когда требуется вернуть массив значений, требуется использовать другие методы.

В этом случае MMULT используется для возврата суммы значений каждой строки.

Смотрите также

+0

Это работает! Спасибо! Хотя, я должен сказать, что я не очень хорошо разбираюсь в MMULT(). – Victor

+0

Последующий вопрос, если вы можете: возможно ли достичь этого, используя также среднюю формулу? У меня есть еще несколько параметров, которые мне нужно вычислить, например, STDEV(), и в конечном итоге будет сложно заставить текущую формулу работать с этими – Victor

+0

. Я добавил объяснение. Что касается последующего вопроса, отправьте его в качестве нового вопроса. –