繁体   English   中英

使用INDIRECT,ADDRESS和MATCH的复杂公式-有更好的方法吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM