google-sheets - 谷歌表格递归数组公式
问题描述
我正在尝试在另一列中创建从设定日期到最近日期的连续日期列表。
=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))),"")
推荐阅读
- ruby - 如何在 Github 存储库中分发和使用 ruby gem 作为 git 子模块?
- php - 在axios发布后laravel重定向不重定向到路由
- android - 让组件对齐
- python - 将 ARMA() 模型拟合到所谓的平稳时间序列时的平稳性问题
- python - SyntaxError:使用破折号的语法无效
- python - 避免 Python 中的模块命名空间污染
- node.js - 使用使用相同用户模型的第二个护照策略?
- mysql - 使用 docker-compose 进行后续迁移时出现 ECONNREFUSED 错误
- c - 如何使按钮读取一次单击而不是保留在arduino中
- c++ - 将接口指针数组静态声明到专用类