我在 A 列中有一列随时间波动的价格,为了便于论述,我们假设它是某只股票的价格。
在 BI 列中,您想要知道从该点开始价格涨到了多高,然后才低于当前金额。
因此,我想我需要一个公式,循环遍历所有后续单元格,直到找到单元格 < A1,然后在此范围内的所有单元格中打印最高值。
任何帮助都将不胜感激!谢谢 :)
答案1
最小工作示例。假设价格为C5:C23
,那么
数组公式
在D5
:
=MAX(INDIRECT("C"&ROW()&":C"&(ROW()+MATCH(-1,SIGN(C5:$C$23-C5),FALSE)-2)))
复制下来的结果是:
请注意,#N/A
错误是有意义的,它们表示下面没有比C
带有 的单元格左侧列中的价格更低的价格#N/A
。
** 编辑 ** 评论
关键点是找到价格低于当前行的行 ( C5
)。“下拉索引” - 从当前行到价格较低的行的行数。函数
=MATCH(-1,SIGN(C5:$C$23-C5),FALSE)
1
返回在数组中找到第一个完全匹配 ( )的行号(将当前行计为),该行号填充了下方价格数组 ( ) 与当前价格 ( )-1
之间的差异符号。C5:$C$23
C5
有了“删除索引”,构建删除之前范围的文本引用就很简单了:
=("C"&ROW()&":C"&(ROW()+MATCH(-1,SIGN(C5:$C$23-C5),FALSE)-2))
然后使用INDIRECT()
将该文本转换为参考并用 找到所需的最大值MAX()
。