2016-04-28 116 views
0

因此,我试图简单计算一个早期日期和今天之间的月数,该日期将在B:B列中;一旦计算了月数,结果就会乘以28,然后返回原始日期。注意要求:结果> =今天,所以基本上如果结果小于今天需要再增加28天。目前的公式我只有当日期是在今年的作品(我不是100%确定这个公式是否有效,但它似乎迄今为止。)计算Excel中两个日期之间的月数

这是我失效的公式,但也许有人可以从我的上述评论,什么我试图在这里实现的下面公式得到一个总体思路:

=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的引用是微不足道的。如果我删除了错误的括号或其他错字,我只是不想删除它,所以我决定离开。所以基本上你不必担心前两个“IF”陈述,也不必担心IFERROR,除非你只是想!

2ND编辑:好吧,我决定把剥离下来的配方,原帖的公式,下方剥离版本:

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

+1

能否请您提供一些示例数据和预期的结果?目前还不清楚你正在寻找什么 – tigeravatar

+0

这可能有所帮助:https://support.microsoft.com/en-gb/kb/214134 – Jordan

+0

如果B1的日期是1/1/16,公式应该计算05的日期/ 20/16(否则4/20/16将在过去)。我希望每4周检查一次这些帐户(这就是为什么经过的月份数量乘以28)。但是,如果B1的日期是1/8/16,它实际上会计算日期为4-29-16。 –

回答

2

你不应该使用MONTH()作为此目的在某些情况下会导致错误的结果,并且肯定当B89日期在另一年时。

而是看你是过去的,因为B89 28天的最后一个多多少天,并返回到该日期(减去),然后添加另一个28到它:

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

的最早日期这可以给出明天的日期。如果今天应该是配方的可接受的结果,然后用TODAY()-1取代TODAY(),导致此公式中:

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

谢谢你的回复!第二种方法很成功(这比我提出的方法简单得多)。谢谢!! –

+0

不客气。 – trincot

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

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

+0

最终结果必须等于或大于今天的日期,为28的倍数。因此,如果自开始日期起3个月过去了,则需要三个月并乘以28(= 84),然后将84天添加到原始日期。这也需要整理,所以如果这个结果在今天之前就需要再增加28天(4周)。 –

+0

我已将上述公式修改为您的标准。现在回到每个月,它将在B89单元格中添加额外的28天到日期。 –

+0

对不起,错过了同一个月的标准。现在修复。 –

相关问题