【问题标题】:Excel: Applying functions to a range of ranges using multi-cell array-formulaExcel:使用多单元格数组公式将函数应用于一系列范围
【发布时间】: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


【解决方案1】:

与 Scott 的建议类似,SUBTOTAL 可以处理由OFFSET 函数创建的范围数组,因此SUBTOTAL 的第一个参数为 1(对于AVERAGE),此公式将给出一个四舍五入的数组每行的平均值

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

在垂直范围内输入并用 CTRL+SHIFT+ENTER

确认

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

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

【讨论】:

  • 谢谢。这真的帮助我理解了我需要做些什么来概括它。我缺少的关键是我需要一个可以从更大范围“切片”单个范围的函数,即:OFFSET() 或 INDEX()。该切片函数将是在适当的数组公式中使用时产生多个范围的部分,然后范围消耗函数(在本例中为 AVERAGE())可以正常对这些范围进行操作。
【解决方案2】:

这是一个公式,可以作为一个数组公式输入并得到结果。也可以正常输入,复制下来。

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

【讨论】:

  • 这是一个非常有用的答案,但我选择了 Barry's,因为它更具可读性和明确性。谢谢!
  • @JesseWyatt 只是让您知道 OFFSET 是不稳定的,这就是为什么我建议 INDEX 不是。
  • 哦,这太令人惊讶了。感谢您的提醒,我假设 INDEX 是否也会波动。我会做更多的阅读,也许会改回来。
猜你喜欢
  • 2021-11-22
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 2016-10-14
  • 1970-01-01
相关资源
最近更新 更多