Excel日期功能

时间:2014-10-28 22:31:30

标签: excel excel-formula excel-2010

需要帮助我看起来似乎不对的复杂公式:

数据如下所示:

        A          B               C       D       E

1                                 2014    2015    2016
2    5/1/2014  7/1/2016            8       12      7

公式需要根据开始和结束日期A2 / B2计算C1-E1中给定年份的月数。

所以在2014年的开始年份,总共有8个月(5月 - 12月),2015年为12个月,因为开始和结束日期跨越2015年和2016年,因为结束日期结束于那一年,距离多少个月年初到结束日期。

我可以得到答案的一部分,但不能完全理解。请救救我! :)

3 个答案:

答案 0 :(得分:1)

我假设您的示例中2016年的7是正确的,因为您将一个月的任何部分计为一个月,在这种情况下,您可以在C2中使用此公式,如果需要,可以反复复制

=IFERROR(MIN(DATEDIF(MAX($A2-DAY($A2)+1,DATE(C$1,1,1)),MIN($B2,DATE(C$1+1,1,0)),"m")+1,12),0)

答案 1 :(得分:0)

此代码将通过一些假设来实现您的目标:

  1. 在A和B中只考虑整个月(例如,在5/1/14和5/10/14之间没有区别 - 它们都将被视为 May
  2. 上面列出的示例无效:E列应显示 6 ,而不是7,因为在1/1/16和7/1/16之间只有6个月。
  3. 将以下代码粘贴到C2并将其拖至C2:E2

    =IF(YEAR($A$2)<C$1,IF(YEAR($B$2)<C$1,0,IF(YEAR($B$2)>C$1,12,MONTH($B$2)-1)),IF(YEAR($A$2)>C$1,0,IF(YEAR($B$2)<C$1,0,IF(YEAR($B$2)>C$1,13-MONTH($A$2),MONTH($B$2)-MONTH($A$2)))))
    

答案 2 :(得分:0)

使用您提供的示例,使工作表如下所示:

tigeravatar example

在单元格C2中,右侧复制的是以下公式:

=IF(YEAR($A2)=C$1,13-MONTH($A2),IF(YEAR($B2)=C$1,MONTH($B2),IF(OR(YEAR($A2)>C$1,YEAR($B2)<C$1),0,12)))