[英]Convoluted formula using INDIRECT, ADDRESS and MATCH - is there a better way?
我需要获得一个最大的范围,该范围由一个助手列中的两个1所界定。
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 ~ [and so on]
因此,举例来说,我感兴趣的是两个可见范围-第1行和第4行之间的范围以及第4行和第12行之间的范围。
在第三列中,无论助手列中有1的什么地方,我都希望范围的最大值。
我设法将完成这项工作的公式拼凑在一起(直接从电子表格复制了该公式, 因此它位于第122行中,当前数据进入第16120行,helper列为E列,而值为F的列) :
=IF(E122=1,MAX(F122:INDIRECT(ADDRESS(ROW()+MATCH(1,E123:$E$16120,0),COLUMN(F122),4))),"")
我的基本思路是通过在帮助器列(使用MATCH)中查找下一个1来建立范围的底部,将其添加到包装在ADDRESS函数中的当前行(使用ROW和COLUMN),然后使用间接。 最后,它位于IF内部,仅在helper列中以1打行。
谁能想到一种更优雅,更轻松的方式?
提前致谢。
如果您有更大的数据集,建议您使用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,"")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.