显示月份的公式,如果等于或大于今天的日期

时间:2015-11-18 15:14:03

标签: excel date excel-formula

这是我非常可怕的代码:

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

在单元格A2中,我从这个日期开始:2015年9月1日

我想要做的是在每行下降时增加月份,但只显示该单元格中的日期,如果我实际上是从今天开始或过去那个月的日期。

这将是预期的输出:

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

这些都不起作用。

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

1 个答案:

答案 0 :(得分:2)

这是我创建的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()功能并显着缩短公式。此函数将指定的月份数添加到指定日期。以下是使用IFERROR()函数的EDATE()示例:

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