计算一个月内天数的有效方法

计算一个月内天数的有效方法

再会,

我正在制定一个时间表,以确定发票在一个日历月内适用的天数。有些发票涵盖一个月,有些涵盖两个月,还有一些涵盖多个月。我想出了一个丑陋的公式,虽然可行,但我想知道是否有更简单的东西可以完成这项工作。

在单元格 Q4

=如果($N4<Q$2,0,(如果(YEAR($N4)=2022,0,如果(MONTH($L4)=Q$1,Q$3-$L4)) +如果(AND(Q$2>$L4,$N4>Q$3),Q$3-Q$2+1,(如果(AND(Q$2>$L4,Q$3>$N4,Q$2<$N4),$N4-Q$2+1,0)))))

在此处输入图片描述

有没有更简单的建议?我正在使用 Office 365

谢谢,

答案1

尝试使用以下SUMPRODUCT()函数:

在此处输入图片描述


=SUMPRODUCT(N(TEXT(ROW(INDEX($A:$A,$L4+1):INDEX($A:$A,$N4)),"mmmm-yyyy")=TEXT(Q$2,"mmmm-yyyy")))

或者,如果您想从第三行包含该月的最后一天,请使用以下命令:

在此处输入图片描述


=IFERROR(
    ROWS(
        INDEX($A:$A, $L4 + 1):
            INDEX($A:$A, $N4)
            INDEX($A:$A, Q$2):
                INDEX(
                    $A:$A,
                    Q$3
                )
    ),
    0
)

或者,只需使用MAX()&即可MIN()

在此处输入图片描述


=MAX(0,MIN($N4,Q$3)+1-MAX($L4+1,Q$2))

上面的公式需要往下填,往右填!


使用MAKEARRAY()一个可以一次性溢出整个输出:

在此处输入图片描述


=LET(
     _Start, L4:L6,
     _End, N4:N6,
     _StartM, Q2:AB2,
     _EndM, Q3:AB3,
     _Rows, ROWS(_Start),
     _Columns, COLUMNS(_StartM),
     MAKEARRAY(_Rows,_Columns,LAMBDA(r,c,
     MAX(0,MIN(INDEX(_End,r),INDEX(_EndM,c))+1-MAX(INDEX(_Start,r)+1,INDEX(_StartM,c))))))

相关内容