使用间接,地址和匹配的卷积公式 – 有没有更好的方法?
我需要得到一个在辅助列中被两个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,"")