2016-11-13 32 views
2

我試圖得到一個包含數據的所有行的平均在我SourceSheet,它需要與魚ID A1:F1Sheet1A2:A5SourceSheet匹配得到的平均水平。我想通過使用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

我添加了一個解釋。關於後續問題,請將其作爲一個新問題發佈。 –