Excel:使用多单元arrays公式将函数应用于一系列范围

你可以应用一个范围内的内build函数(如AVERAGE()),并适用于多个范围?

目前,我正在完成一个非常基本的数据分析单元,它有一个小的Excel分段,我过去的任务是分析一些房屋数据。

其中一项任务是在每个时期对几个城市的住宅价格进行平均和四舍五入。

目标数据位于工作表Residential_Houses ,格式为城市为列,时间段为跨越C7:J30行。 目标是在工作表Analysis跨越C7:C30获得每行的平均值。

我简单的解决办法是写公式:

 =ROUND(AVERAGE(Residential_Houses!C7:J7), 2) 

进入Analysis!C7 ,然后使用Excel的“AutoFill”function生成Analysis!C8:C30的公式。 这工作得很好,结果是正确的,但我没有明确使用单元格数组公式丢失标记。

相反,我得到的样本答案是这个单一的行:

 {=ROUND((Residential_Property!C7:C30+Residential_Property!D7:D30+Residential_Property!E7:E30+Residential_Property!F7:F30+Residential_Property!G7:G30+Residential_Property!H7:H30+Residential_Property!I7:I30+Residential_Property!J7:J30)/8,2)} 

看起来很清楚,这个代码的目的是为每行7-30取CJ列的平均值,但是避免使用AVERAGE()内build的。 这个工作,但是很麻烦,如果这个testing数据中有多个列,那么就不会扩展。

我的问题的关键在于如何将已经在范围上运行的函数单元arrays公式一起使用单个公式来处理多个范围?

我的直觉告诉我可能是这样的:

 {=AVERAGE((C7:J7):(C30:J30))} 

或者是涉及间接处理的东西,但是我似乎无法find关于这个主题的任何详细信息。 到目前为止,我发现的所有数组公式都只限于基本的算术和单维度范围。 有人能指出我在这里正确的方向,还是这是不可能的数组公式?

编辑 :任何人在未来的这个绊倒。 我select了Barry的解决scheme,因为它帮助我理解了如何概括这个概念(用可以切分范围的函数replace范围)。 但正如斯科特所说,OFFSET()是不稳定的; 所以如果您使用大型数据集,INDEX()是更好的方法。

与Scott的build议类似, SUBTOTAL可以处理由OFFSET函数创build的一系列范围,所以将SUBTOTAL的第一个参数设置为1(对于AVERAGE ),此公式将给出每行的舍入平均数组

=ROUND(SUBTOTAL(1,OFFSET(C7:J30,ROW(C7:J30)-ROW(C7),0,1)),2)

在垂直范围内input并用CTRL + SHIFT + ENTER确认

或者你可以在AVERAGE函数中使用相同的OFFSET如下所示:

=ROUND(AVERAGE(OFFSET(C7:J30,ROW(C7:J30)-ROW(C7),0,1)),2)

这是一个公式,可以作为一个数组公式input。 它也可以正常input并复制下来。

 =ROUND(AVERAGE(INDEX($C$7:$J$30,ROW()-MIN(ROW($C$7:$J$30))+1,0)),2) 

在这里输入图像说明