计算Excel中两个日期之间的月数

时间:2016-04-28 14:14:43

标签: excel date formula counting

所以我试图简单地计算在较早的日期和今天之间的月数,这将在B:B列中;一旦计算了月数,结果再乘以28,然后再加回原始日期。请注意要求:结果> =今天,所以基本上如果结果小于今天,则需要再添加28天。我所制定的现行公式只适用于当前年份的日期(我不确定这个公式是否有效,但到目前为止似乎是这样。)

这是我已经不存在的公式,但是也许有人可以从我上面的评论以及我试图在这里实现的以下公式中获得一般性的想法:

=IF(B89="","",IF(I89="X","LEG",IFERROR(IF((MONTH(TODAY()-B89)*28)+B89<TODAY(),(MONTH(TODAY()-B89)*28)+B89+28,(MONTH(TODAY()-B89)*28)+B89),"Future")))

提前感谢您的协助!

注意:我只是想指出,对I89的引用在上面是无关紧要的。如果我删除了错误的括号或其他拼写错误,我只是不想删除它,所以我决定留在那里。所以基本上你不必担心前两个&#34; IF&#34;声明,也不是IFERROR,除非你只是想要!

2ND编辑:好的,我决定删除公式,原始帖子的公式在上面,剥离版本如下:

IF((MONTH(TODAY()-B89)*28)+B89<TODAY(),(MONTH(TODAY()-B89)*28)+B89+28,(MONTH(TODAY()-B89)*28)+B89)

2 个答案:

答案 0 :(得分:2)

您不应该为此目的使用MONTH(),因为这会在某些情况下导致错误的结果,当然B89日期是在另一年。

相反,请查看自B89以来28天的最后一天多少天,并返回该日期(通过减去),然后再添加28天:

=TODAY() + 28 - MOD((TODAY()-B89), 28)

这可以给出的最早日期是明天的日期。如果今天应该是公式的可接受结果,那么将TODAY()替换为TODAY()-1,这将产生以下公式:

=TODAY() + 27 - MOD((TODAY()-1-B89), 28)

答案 1 :(得分:0)

这样的事情怎么样:

=IF(B89="","",IF(I89="X","LEG",IF(IF(B89<=TODAY(),B89+28*IF(AND(B89<TODAY(),TEXT(B89,"mmyy")=TEXT(TODAY(),"mmyy")),"1",(TEXT(TODAY(),"yy")*12+MONTH(TODAY()))-(TEXT(B89,"yy")*12+MONTH(B89))),"Future")<TODAY(),TODAY(),IF(B89<=TODAY(),B89+28*IF(AND(B89<TODAY(),TEXT(B89,"mmyy")=TEXT(TODAY(),"mmyy")),"1",(TEXT(TODAY(),"yy")*12+MONTH(TODAY()))-(TEXT(B89,"yy")*12+MONTH(B89)))))))

现在有点长,但你有很多标准:)