Excel |使用日期的嵌套 IF 语句

Excel | nested IF statements using dates

我正在尝试计算 2019 年给定时间范围内的月数。

我的数据是这样的:

我将开始日期和结束日期列的格式更改为 "date"。 "Duration in months" 和输出列具有数字格式。

我是这样处理的:

  1. 如果开始日期(年)< 2019 AND 结束日期(年)= 2019,取 1-1-2019 和结束日期之间的月数。
  2. 如果开始日期(年)< 2019 AND 结束日期(年)> 2019,则 2019 年的月数 = 12
  3. 如果开始日期(年)= 2019 AND 结束日期(年)= 2019,取开始日期和结束日期之间的月数。
  4. 如果开始日期(年)= 2019 AND 结束日期(年)> 2019,取开始日期和 1-1-2020 之间的月数。
  5. 对于所有其他情况,月数 = 0。

然后我按照 this website 中的说明进行嵌套 IF 函数。

我想出了以下公式:(编辑:将 last datedif 更改为 2020 而不是 2019)

=IF(AND(YEAR(A3)<2019;YEAR(C3)=2019);DATEDIF(DATE(2019;1;1);C3;"m");IF(AND(YEAR(A3)<2019;YEAR(C3)>2019);12;IF(AND(YEAR(A3)=2019;YEAR(C3)=2019);DATEDIF(A3;C3;"m");IF(AND(YEAR(A3)=2019;YEAR(C3)>2019); DATEDIF(A3;DATE(2020;1;1);m);0))))

对于前 4 行,正确 returns 12。 但是,对于第 7 行和第 8 行,它 returns #NAME? .

无论我怎么尝试,我似乎都无法让它工作。关于如何解决这个问题的任何想法?

非常感谢!

艾米

你错过了决赛的报价 "m" - 试试

=IF(AND(YEAR(A3)<2019;YEAR(C3)=2019);DATEDIF(DATE(2019;1;1);C3;"m");IF(AND(YEAR(A3)<2019;YEAR(C3)>2019);12;IF(AND(YEAR(A3)=2019;YEAR(C3)=2019);DATEDIF(A3;C3;"m");IF(AND(YEAR(A3)=2019;YEAR(C3)>2019); DATEDIF(A3;DATE(2019;1;1);"m");0))))

对于整个公式,除了最后一个 IF 语句外,您在 DATEDIF( 语句中出错的地方是一致的:

DATEDIF(A3;DATE(2019;1;1);m);0)

首先你忘了把 m 放在引号里:"m"

其次,您不小心交换了日期和单元格引用,所以它会解决 #NUM。完整正确的公式应该是:

=IF(AND(YEAR(A7)<2019;YEAR(C7)=2019);DATEDIF(DATE(2019;1;1);C7;"m");IF(AND(YEAR(A7)<2019;YEAR(C7)>2019);12;IF(AND(YEAR(A7)=2019;YEAR(C7)=2019);DATEDIF(A7;C7;"m");IF(AND(YEAR(A7)=2019;YEAR(C7)>2019);DATEDIF(DATE(2019;1;1);A7;"m");0))))

这将为您提供结果 4

或者,以下内容将为您提供两个日期之间的完整月数。这适用于您的示例,您的日期从一个月的第一天开始:

D2中的公式:

=SUMPRODUCT((DATE(2019,ROW(:),1)>=A2)*(DATE(2019,ROW(:),1)<=C2))