这是我非常可怕的代码:
=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)))
这些都不起作用。
任何人都可以提出建议,作为奖励,看看是否有更聪明的方法来实现这一目标?
答案 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)),"")