【发布时间】:2017-06-12 12:10:40
【问题描述】:
我正在尝试编写一个 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 |...
另一个复杂的问题是结束日期可能会留空,表示结束日期应视为今天。我可以在从 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)))))))))
【问题讨论】:
-
如果第一天很重要,您的示例应该有 19
-
感谢您的评论。是的,第一天应该算,我已经编辑了我的问题
-
我们也可以假设开始日期不超过结束日期前一年吗?
-
那么看看你到目前为止的公式会很有用;但只是猜测,用
IF(ISBLANK([End Date], TODAY(), [End Date])替换公式中出现的[End Date]应该处理空白。或者,如果[End Date]是一些复杂函数而不是单元格引用(如上面的 IF 语句)是1/IFERROR(1/[End Date], 1/TODAY()),我喜欢使用的公式是1/IFERROR(1/[End Date], 1/TODAY()),因为它只使用[End Date]一次,而不是在另一个公式中使用两次(但是可以说它的可读性较差)。发布您编写的代码总是比试图让用户为您编写代码更好 -
我真的认为它会,这个网站上有很多聪明人可以阅读几乎任何公式,试试吧!但尽量限制您发布的内容,仅显示相关内容(请参阅the help centre)。使用多个嵌套 if 语句时也考虑
IFS((office 365 2016),或者如果IFS不是一个选项,则考虑CHOOSE(
标签: excel excel-formula