使用arrayformula动态查找并获得平均值

时间:2016-11-13 17:41:54

标签: google-sheets array-formulas

我正在尝试获取包含SourceSheet数据的所有行的平均值,这些行需要与A1:F1Sheet1中的鱼ID A2:A5匹配在SourceSheet。我希望使用ARRAYFORMULA()来执行此操作,因为Sheet1!A2:A5是动态的,并且可能会不时包含其他值。

到目前为止,我只管理了查找和平均部分:

=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 | +---------+---------+

1 个答案:

答案 0 :(得分: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用于返回每行的值的总和。

另见