Ler*_*roy 3 excel excel-formula
我正在尝试编写一个 Excel 公式,可以将其拖动到一行单元格上,以给出两个指定日期之间每个月的天数。例如:
A B C D E F
1 | START DATE | END DATE | Jan | Feb | Mar | Apr |...
---------------------------------------------------------
2 | 10/02/17 | 15/03/17 | 0 | 19 | 15 | 0 |...
Run Code Online (Sandbox Code Playgroud)
另一个复杂之处是结束日期可能留空,表明结束日期应视为今天。我可以在从 C2 开始的单元格中放入公式,但必须保留 A 列和 B 列供用户输入。
我使用大量嵌套的 if 语句取得了一些进展,但如果结束日期为空,我很难处理它。
有人可以帮忙吗?
*编辑
到目前为止,我没有显示我写的公式,因为我担心它有点混乱,但根据要求,我现在在下面显示(这个公式来自 C2)
=IF(AND($A2<C$1,$B2<D$1),DAY(A2),IF($A2>=D$1,0,IF(AND($A2<C$1,$B2=""),IF(TODAY()<C$1,0,IF(TODAY()>C$1,IF(TODAY()<D$1,DAY(TODAY()),D$1-C$1),IF(TODAY()<D$1,INT(TODAY()-$A2),$D1-$C1))),IF(AND($A2>=C$1,$B2=""),IF(TODAY()<D$1,INT(TODAY()-$A2+1),D$1-$A2),IF(AND($A2>=C$1,$B2<D$1),$B2-$A2+1,IF(AND($A2<C$1,$B2<C$1),0,IF(AND($A2>=C$1,$B2>=D$1),D$1-$A2,IF(AND($A2<C$1,$B2<D$1),DAY(B2),IF(AND($A2<C$1,$B2>=D$1),D$1-C$1,0)))))))))
Run Code Online (Sandbox Code Playgroud)
无论如何,这是基于标准公式的完整性的替代方法
=max(0,min(end1,end2)-max(start1,start2)+1)
Run Code Online (Sandbox Code Playgroud)
对于两个日期范围之间的重叠,给出
=MAX(0,MIN(IF($B2="",TODAY(),$B2),EOMONTH(DATEVALUE(C$1&"-17"),0))-MAX($A2,DATEVALUE(C$1&"-17"))+1)
Run Code Online (Sandbox Code Playgroud)