使用间接,地址和匹配的卷积公式 – 有没有更好的方法?

我需要得到一个在辅助列中被两个1所限制的范围的MAX。

1是分开的可变数量的行。

举个例子,下面是我正在谈论的一个例子:

 1   
 0 -1.10%
 0 0.00%
 1   
 0 1.43%
 0 1.15%
 0 2.12%
 0 2.69%
 0 1.32%
 0 0.86%
 0 -0.69%
 1
 〜
 [等等] 

所以,例如,我在这里感兴趣的是两个可见的范围 – 行1和行4之间的范围以及行4和行12之间的范围。

在第三列中,在帮助列中有1的地方,我需要范围的最大值。

我已经设法凑齐了这个工作的公式(这是直接从电子表格复制,所以它在行122,数据当前行16120,帮助列是列E和列的值是F)

=IF(E122=1,MAX(F122:INDIRECT(ADDRESS(ROW()+MATCH(1,E123:$E$16120,0),COLUMN(F122),4))),"") 

我的基本思路是通过查找下一个帮助器列(使用MATCH)来构build范围的底部,将其添加到包装在ADDRESS函数中的当前行(使用ROW和COLUMN),然后将它们连接在一起间接。 最后,它位于一个IF中,只在辅助列中打1。

任何人都可以想到一个更优雅,更麻烦的方式吗?

提前致谢。

如果你有一个更大的数据集,我build议使用INDEX而不是OFFSET ! 后者是不稳定的,即Excel将重新计算所有OFFSET公式和每次重新计算时的任何依赖项。 另一方面,INDEX是非易失性的,也就是说,只有前面的任何变化,Excel才会重新计算公式。

所以,给这个公式一个尝试:

 =IF(E122=1,MAX(F123:INDEX(F123:$F$16120,MATCH(1,E123:$E$16120,0))),"") 

你可以使用OFFSET :

 =IF(E122=1,MAX(OFFSET(E122,1,1,MATCH(1,E123:$E$16120,0)))-1,"")