google-sheets - 有没有更简单的方法来说明当前日期是否在 Google 表格中的设定范围内?
问题描述
我正在尝试创建一个筹款电子表格,以说明资助者目前是否开放或关闭申请。理想情况下,这将仅基于月份和日期,因此不必每年更新,但我遇到了从一年年底开始到下一年结束的资金周期问题(例如 2020 年 12 月) - 2021 年 2 月)。这就是我想出的解决方法,但是有没有更简单的方法来实现相同的结果?
如果今天的日期在资金窗口内,它应该返回 Open;否则应该说关闭。滚动截止日期始终是开放的。我目前拥有的内容返回正确的输出,但会减慢工作表的速度。我还与一群具有不同计算机技能水平的志愿者合作,理想情况下希望给他们留下易于理解/维护的东西。
=IF(B77="rolling","Open",IF(YEAR(B77)=YEAR(C77),
IF(
AND(
DATE(YEAR(B77),MONTH(TODAY()),DAY(TODAY()))>=B77,
DATE(YEAR(C77),MONTH(TODAY()),DAY(TODAY()))<=C77),
"Open",
"Closed"),
IF(
OR(
DATE(YEAR(B77),MONTH(TODAY()),DAY(TODAY()))>=B77,
DATE(YEAR(C77),MONTH(TODAY()),DAY(TODAY()))<=C77),
"Open",
"Closed")))
解决方案
我在您的示例电子表格中添加了一个新工作表(“Erik 帮助”)。
我从 C 列中删除了您的标题和所有逐行公式,并将它们替换为 C1 中的以下单个数组公式:
=ArrayFormula({"Status Today"; IF(A2:A="",,IF(ISTEXT(A2:A),"Open",IF((TODAY()>=A2:A)*(TODAY()<=B2:B),"Open","Closed")))})
这一个公式将生成标题(您可以在公式本身中随意更改)和所有列结果。
首先,IF
运行测试以查看 A 列中的每个单元格是否为空白。如果是,则 C 列中的相应单元格为空;否则IF
启动下一个测试。
由于您的所有日期都是数字,因此第二个IF
测试只是检查 A 列中的值是否ISTEXT
。如果是,那么我们知道它是“滚动”,返回值是“打开”;如果不是,则启动最终IF
测试。
最后的IF
测试只是检查两个括号条件是否为真(由星号连接,在数组公式中表示AND
)。这两个条件TODAY()
是大于或等于 A 列中的值和TODAY()
小于或等于 B 列中的值。如果是,则返回“Open”;否则,返回“关闭”。
推荐阅读
- bigcartel - 将购物篮图标更改为购物车图标大卡特尔
- r - 来自data.frame的ggplot密度图,包含时刻
- docker - gitlab-ci docker cypress e2e 中的后端服务器
- java - A question about how JVM allocates memory for primitives
- sql - Limit Number of elements in a string aggregation query
- .net-core - Readering resposnse headers with CefGlue
- slurm - 将具有更高优先级的作业添加到 SLURM 队列作为先前提交的作业
- css - Use the same styles.css file for multiple Rmarkdown projects
- azure-devops - 无法解析模板语言表达式'encodeURIComponent([parameters('table_storage_name')])'
- java - How to get randomly a pair elements from a 2d Array (java)