首页 > 解决方案 > 有没有更简单的方法来说明当前日期是否在 Google 表格中的设定范围内?

问题描述

我正在尝试创建一个筹款电子表格,以说明资助者目前是否开放或关闭申请。理想情况下,这将仅基于月份和日期,因此不必每年更新,但我遇到了从一年年底开始到下一年结束的资金周期问题(例如 2020 年 12 月) - 2021 年 2 月)。这就是我想出的解决方法,但是有没有更简单的方法来实现相同的结果?

如果今天的日期在资金窗口内,它应该返回 Open;否则应该说关闭。滚动截止日期始终是开放的。我目前拥有的内容返回正确的输出,但会减慢工作表的速度。我还与一群具有不同计算机技能水平的志愿者合作,理想情况下希望给他们留下易于理解/维护的东西。

这是演示表的链接:https ://docs.google.com/spreadsheets/d/1lHFd0f_y2PCzLSvXYM6XD1rCfdzCglsQvyfpu7xJiRQ/edit?usp=sharing

   =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")))

标签: google-sheetsbooleangoogle-sheets-formula

解决方案


我在您的示例电子表格中添加了一个新工作表(“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”;否则,返回“关闭”。


推荐阅读