谷歌表格递归数组公式



我正在尝试创建从设置日期到另一列中最近日期的连续日期列表。

=ARRAYFORMULA(IF(OR(A2:A=MAX(C:C),A2:A=""),"",DATEVALUE(A2:A+1)))

我使用MAX()在 C 列中查找最近日期的日期。我试图让这个公式做的是递归检查上面单元格中的日期,以确定是否已达到最大日期。我已经确保 A2 已经设定了开始日期。

输出仅在一个单元格中,我不知道为什么。

谢谢你的帮助。

似乎困扰您当前数组公式的是,按照定义,它会永远持续并且是自我引用的。可能有一种方法可以通过将首选项设置为迭代并帮助它解释以"作为收敛的重复单元格来实现它。 这是回避这些问题的一种方法。您可以对其进行更多防弹(例如,将其包装在 IFERROR 中(,但基本上您可以准确计算出所需的条目数,然后在 Array 公式中相应地设置范围。在 A3 中,放置以下内容:

=arrayformula(DATEVALUE(Row(indirect("A3:A"&(max(C:C)-A2+2)))+A2-2))

这将构造您想要的确切范围,然后使用显式而不是递归公式计算每个条目。

编辑:上面的实现假设您至少需要 2 个日期。您可以使用以下可读性较低的公式处理这种情况和其他奇怪的情况=if(max(C:C)>A2,iferror(arrayformula(DATEVALUE(Row(indirect("A3:A"&(max(C:C)-$A$2+2)))+$A$2-2))),"")

最新更新