我试图计算2019年内给定时间范围内的月数。
我的数据如下:
我将开始日期和结束日期列的格式更改为“日期”。“持续月数”和“输出”列具有数字格式。
我的做法如下:
然后,我按照本网站的说明进行嵌套IF函数。
我想出了以下公式:(编辑:将最后日期更改为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行,它正确返回12。然而,对于第7行和第8行,它返回#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))))
或者,以下内容将为您提供两个日期之间的完整月份数。这适用于您的示例,其中日期从每月的第一天开始:
< code>D2中的公式:
=SUMPRODUCT((DATE(2019,ROW($1:$12),1)>=A2)*(DATE(2019,ROW($1:$12),1)<=C2))
对于整个公式,除了最后一个IF语句之外,您在DATEDIF(
语句中出错了:
DATEDIF(A3;DATE(2019;1;1);m);0)
首先你忘了把m放在引号里:“
m”
其次,您意外地交换了Date和Cell引用,因此它将解析#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
.
在VB.Net中嵌套If-Then-Else语句总是合法的,这意味着你可以在另一个If ElseIf语句中使用一个If或ElseIf语句。 语法 (Syntax) 嵌套If语句的语法如下 - If( boolean_expression 1)Then 'Executes when the boolean expression 1 is true If(boolean_expressi
我有两个嵌套的IF语句。。 <代码>=如果($B3=$K$3,日期(年(D3)$L$3,月(D3)$M$3,天(D3)),如果($B3=$K$4,日期(年(D3)$L$4,月(D3)$M$4,天(D3)),如果($B3=$K$5,日期(年(D3)$L$5,月(D3)$M$5,天(D3)),如果($B3=$K$6,日期(年(D3)$L$6,月(D3)$M$6,天(D3)),“”) 和
在Objective-C编程中nest if-else语句总是合法的,这意味着你可以在另一个if或else if语句中使用if或else if语句。 语法 (Syntax) nested if语句的语法如下 - if( boolean_expression 1) { /* Executes when the boolean expression 1 is true */ if(bool
在Pascal编程中嵌套if-else语句总是合法的,这意味着你可以在另一个if或else if语句中使用if或else if语句。 Pascal允许嵌套到任何级别,但是,如果依赖于特定系统上的Pascal实现。 语法 (Syntax) 嵌套if语句的语法如下 - if( boolean_expression 1) then if(boolean_expression 2)then S1 e
在Swift 4中嵌套if-else语句总是合法的,这意味着你可以使用一个if else if else if语句。 语法 (Syntax) nested if语句的语法如下 - if boolean_expression_1 { /* Executes when the boolean expression 1 is true */ if boolean_expression_2 {
另一个If或ElseIf语句中的If或ElseIf语句。 内部If语句基于最外面的If语句执行。 这使VBScript可以轻松处理复杂的条件。 语法 (Syntax) 以下是VBScript中Nested If语句的语法。 If(boolean_expression) Then Statement 1 ..... ..... Statement n If(boolea
在条件解析为true后,您可能希望检查其他条件。 在这种情况下,您可以使用嵌套的if结构。 在嵌套的if结构中,你可以在另一个if...elif...else构造中使用if...elif...else构造。 语法 (Syntax) 嵌套if...elif...else结构的语法可能是 - if expression1: statement(s) if expression2:
nest if-else语句总是合法的,这意味着你可以在另一个if或else if语句中使用if或else if语句。 语法 (Syntax) nested if语句的语法如下 - if( boolean_expression 1) { // Executes when the boolean expression 1 is true if(boolean_expression 2)