【问题标题】:Formula to show month if equal or greater than today's date如果等于或大于今天的日期,则显示月份的公式
【发布时间】:2016-02-20 09:39:41
【问题描述】:

这是我非常糟糕的代码:

=IF((DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))>TODAY(),0,DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))

在单元格 A2 中,我从以下日期开始:01/09/2015

我想要做的是在每行向下时递增月份,但仅当我从今天的日期起实际处于或超过该月份时,才在该单元格中显示日期。

这将是预期的输出:

01 September 2015
01 October 2015
01 November 2015

我的主要问题是,如何让结果为空白而不是显示0。我尝试了以下方法:

=IF((DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))>TODAY(),,DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))

=IF((DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))>TODAY(),'',DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))

=IF((DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))>TODAY(),"",DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))

这些都不起作用。

任何人都可以提出建议,作为奖励,看看是否有更聪明的方法来实现这一目标?

【问题讨论】:

    标签: excel date excel-formula


    【解决方案1】:

    这是我创建的Example Excel File

    您的第三个选项可以很好地使用空字符串在单元格中放置一个空白。

    IF(DATE(YEAR(A2),MONTH(A2)+1,DAY(A2))>TODAY(),"",DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)))
    

    此外,如果您将其复制到该列中,如果前一行为空白,最终您将遇到错误。为了防止它显示#VALUE!,您可以使用IFERROR() 函数,如下所示:

    =IFERROR(IF(DATE(YEAR(A2),MONTH(A2)+1,DAY(A2))>TODAY(),"",DATE(YEAR(A2),MONTH(A2)+1,DAY(A2))),"")
    

    如果您有 Excel 2007 或更高版本,则可以使用 EDATE() 函数并显着缩短您的公式。此函数将指定的月数添加到指定的日期。这是使用EDATE() 函数的IFERROR() 示例:

    =IFERROR(IF(EDATE(A2,1)>TODAY(),"",EDATE(A2,1)),"")
    

    【讨论】:

    • 如果他们有 2007 年及以后的版本,则可以截断为 =IFERROR(IF(EDATE(A2,1)>TODAY(),"",EDATE(A2,1)),"")
    • @ScottCraner 很高兴知道。我不知道这个功能。好像比较专业。我会用该信息更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多