Google 张递归数组公式

Google Sheets Recursive Array Formula

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

=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)))+$A-2))),"")

来处理这种情况和其他奇怪的情况