我需要获得一个范围的MAX,该范围在辅助列中由两个1绑定。
1s是可变数量的行。
举例来说,这是我正在谈论的一个例子:
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 ~ [and so on]
因此,例如,我在这里可以看到两个可见范围 - 第1行和第4行之间的范围以及第4行和第12行之间的范围。
在第三列中,无论helper列中有1,我都想要范围的MAX。
我已经设法凑齐了这个完成工作的公式(这是直接从电子表格中复制的,所以它在第122行,数据当前转到第16120行,辅助列是第E列和列值为F):
=IF(E122=1,MAX(F122:INDIRECT(ADDRESS(ROW()+MATCH(1,E123:$E$16120,0),COLUMN(F122),4))),"")
我的基本思路是通过在辅助列中查找下一个1(使用MATCH)来构建范围的底部,将其添加到包含在ADDRESS函数内的当前行(使用ROW和COLUMN)然后绑定它一起使用INDIRECT。最后,它位于IF内部,仅在辅助列中以1打击行。
有人能想到一种更优雅,不那么繁琐的方式吗?
提前致谢。
答案 0 :(得分:5)
如果您有更大的数据集,我建议您使用INDEX
代替OFFSET
!后者是不稳定的,即Excel每次重新计算时都会重新计算所有OFFSET公式和任何依赖项。另一方面,INDEX是非易失性的,即只有当它的任何前辈改变时,Excel才会重新计算公式。
因此,试试这个公式:
=IF(E122=1,MAX(F123:INDEX(F123:$F$16120,MATCH(1,E123:$E$16120,0))),"")
答案 1 :(得分:2)
您可以使用OFFSET:
=IF(E122=1,MAX(OFFSET(E122,1,1,MATCH(1,E123:$E$16120,0)))-1,"")