我正在尝试使用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(我希望这会导致一个全新的错误),但这会导致从表格中的其他位置拉取数据我既不想也不理解的方式。
我确定我错过了一些明显的东西!提前感谢任何指导。
答案 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+。
请注意,突出显示的行现在有结果。
另外,请注意我在返回数组时如何使用SUMIFS
和COUNTIFS
(由于数组常量作为标准之一)。