AGGREGATE不按预期处理错误

时间:2018-03-29 21:07:55

标签: excel error-handling aggregate

我正在尝试使用AGGREGATE从具有三个条件的一系列数据中编译excel中的平均值:

=AGGREGATE(1,6,INDEX('Raw Data'!H:H,(SUMPRODUCT(MATCH(1,('Raw Data'!$A:$A=$A2)*('Raw Data'!$B:$B=1)*('Raw Data'!$C:$C=MOD((ROW(C1)-1),23)),0)))),INDEX('Raw Data'!H:H,(SUMPRODUCT(MATCH(1,('Raw Data'!$A:$A=$A2)*('Raw Data'!$B:$B=2)*('Raw Data'!$C:$C=MOD((ROW(C1)-1),23)),0)))),INDEX('Raw Data'!H:H,(SUMPRODUCT(MATCH(1,('Raw Data'!$A:$A=$A2)*('Raw Data'!$B:$B=3)*('Raw Data'!$C:$C=MOD((ROW(C1)-1),23)),0)))))

但是,当其中一个INDEX步骤因数据丢失而引发错误时,整个函数返回#N / A而不是存在的值的平均值。如果我将单个INDEX分成他们自己的单元格,然后平均结果,我得到预期值。但是使用AGGREGATE的全部意义在于避免必须创建大量辅助单元......

我尝试在IFERROR中包装SUMPRODUCT和MATCH步骤,用零值替换#N / A(我希望这会导致一个全新的错误),但这会导致从表格中的其他位置拉取数据我既不想也不理解的方式。

我确定我错过了一些明显的东西!提前感谢任何指导。

1 个答案:

答案 0 :(得分:0)

我无法确定为什么AGGREGATE函数没有忽略公式中的错误。我尝试了多种解决该功能问题的方法。

在解决问题的过程中,

  • 我使用命名范围将单元格引用从整列更改为相关行。这确实显着加快了计算速度。
  • 我还将三个引用分开并确定在许多但不是全部返回错误的行中,所有三个引用都返回#N/A。但是,如果AGGREGATE函数按设计运行,则应该返回#DIV/0!错误,而不是#N/A

也许AGGREGATE函数中存在错误,或者没有记录的某些限制。无论如何,以下公式似乎做你想要的。当然,如果三个引用都不是有效的,它将返回#DIV/0

'Chart Data'!B2:  =SUM(SUMIFS(HH,AA,$A2,BB,{1,2,3},CC,MOD((ROW(B1)-1),23)))/SUM(COUNTIFS(AA,$A2,BB,{1,2,3},CC,MOD((ROW(B1)-1),23)))

Named Ranges应该是显而易见的:-)该公式适用于整列范围,但速度较慢。如果这是一个问题,我建议使用动态命名范围,或者适度超大的固定范围 - 大到足以允许将来扩展 - 可能是1,000或10,000行,而不是你现在使用的1,000,000+。

请注意,突出显示的行现在有结果。

另外,请注意我在返回数组时如何使用SUMIFSCOUNTIFS(由于数组常量作为标准之一)。

enter image description here