如果 < TODAY()、>TODAY()、=TODAY(),同一单元格中的三个不同条件会产生不同的结果

如果 < TODAY()、>TODAY()、=TODAY(),同一单元格中的三个不同条件会产生不同的结果

如果我有三个不同的参数并且根据日期有自己的结果,那么最好使用 IF 函数吗?

我想要的是,如果 A 列中的日期早于今天,则在该行的劳动列中返回“”或 0。如果 TODAY() 位于 A 列中日期的周结束日期内,则星期一返回 230,星期二返回 180,星期三返回 135,星期四返回 90,星期五返回 40。最后,对于 A 列中的日期大于 TODAY() 日期的所有行,返回 230。

除了当单元格中的日期大于今天的周结束日期时返回一个值之外,我已经能够完成所有这些操作。Excel 给出了错误,说我嵌套的 IF 太多了。我知道较新的版本允许我使用更多嵌套的 IF,但我必须使用此版本。以下是代码示例

{=IF($A32<TODAY(),0, IF(TODAY()=2-WEEKDAY(TODAY())+TODAY(),$T$32,IF(TODAY()=3-WEEKDAY(TODAY())+TODAY(),$U$32,IF(TODAY()=4-WEEKDAY(TODAY())+TODAY(),$V$32,IF(TODAY()=5-WEEKDAY(TODAY())+TODAY(),$W$32,IF(TODAY()=6-WEEKDAY(TODAY())+TODAY(),$X$32))))))} 

有没有办法上传我的电子表格副本?一张图片胜过千言万语

链接至工作表

答案1

我有一个公式给你:

=IF(TODAY()>This_Week_End, 0, IF(AND(TODAY()>Last_Week_End, TODAY()<=This_Week_End),
    INDEX(Weekday_Amounts, 1, WEEKDAY(TODAY(), 11)), Past_Amount))

在哪里

  • This_Week_End是当前行的日期
  • Last_Week_End是上一行的日期
  • Weekday_Amounts是金额行,每周每天一个(周六和周日为 0)
  • Past_Amount是 230

有三个条件

  1. TODAY()>This_Week_End:此行在之前TODAY(),返回0
  2. AND(TODAY()>Last_Week_End, TODAY()<=This_Week_End)TODAY()属于本行的周数。
    • 使用第二个参数11让它WEEKDAY()在星期一返回 1。
    • 使用结果来WEEKDAY查找要返回工作日金额行中的哪一列(作为INDEX()函数的第 3 个参数)
  3. TODAY() > This_Week_end:此行位于之后TODAY(),返回230

我使用 FormulaChop 生成了这个示例公式。(完整披露:我编写了 FormulaChop)。这里是 FormulaChop 输出的屏幕截图。这里是下载我为证明这一点而编写的电子表格的链接。您会注意到它有一个“多步骤”版本的公式,比这里的“单行”版本更清晰。

相关内容