【发布时间】:2018-04-27 19:07:51
【问题描述】:
你能否应用一个接受范围的内置函数(例如 AVERAGE()),并将其应用于多个范围?
我目前正在用一个小的 Excel 部分完成一个非常基本的数据分析单元,并且我过去的任务涉及分析一些住房数据。
其中一项任务涉及对每个时间段内几个城市的住宅房价进行平均和四舍五入。
目标数据位于工作表Residential_Houses 中,其格式为城市为列,时间段为跨行:C7:J30。目标是让工作表中每一行的平均值 Analysis 跨越 C7:C30。
我的简单解决方案是写公式:
=ROUND(AVERAGE(Residential_Houses!C7:J7), 2)
进入Analysis!C7,然后使用Excel 的“自动填充”功能为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 的 C-J 列的平均值,但它避免使用 AVERAGE() 内置函数。这行得通,但是很麻烦,并且如果此测试数据中的列多于几列,则无法扩展。
我的问题的症结在于如何将已经在范围上运行的函数与单元格数组公式结合起来处理多个范围用一个公式?
我的直觉告诉我可能是这样的:
{=AVERAGE((C7:J7):(C30:J30))}
或涉及间接寻址的内容,但我似乎无法找到有关该主题的任何详细信息。到目前为止,我发现的所有数组公式资源都仅限于基本算术和一维范围。有人可以在这里指出我正确的方向吗,或者这只是数组公式不可能吗?
编辑:适用于将来偶然发现此问题的任何人。我选择了 Barry 的解决方案,因为它帮助我理解了如何概括这个概念(用可以切片范围的函数替换范围)。但正如 Scott 指出的那样,OFFSET() 是不稳定的;因此,如果您正在处理大型数据集,则 INDEX() 是一种更好的方法。
【问题讨论】:
-
嘿,杰西:这是什么课程?我很好奇他们还涵盖了哪些内容。仅个人兴趣...与您的问题没有直接关系。
-
@jeffreyweir 该单元是 CITS2401 - 西澳大利亚大学的计算机分析和可视化。它主要以 MATLAB 为重点,老实说,我认为它是一个很差的单元。它面向没有编程经验的二级工程专业学生,因此它非常准系统。对于 CompSci/DataSci 专业的学生来说,这有点令人失望。
标签: excel excel-formula