我有一个工作表,其中显示了员工分配以及他们的合同开始和结束日期。在D列中,我计算了该合同完成的百分比。
我的公式适用于当前日期和过去的日期,但是将来的日期会产生#NUM!。我觉得这是因为无法计算或小于0。
我已尝试纠正此问题,但它目前在击败我。有任何解决建议吗?
公式:
=IF(ISBLANK(B2),"",IF((DATEDIF(B2,TODAY(),"d")+1)/(DATEDIF(B2,C2,"d")+1)>99.99%,1,IFERROR((DATEDIF(B2,TODAY(),"d")+1)/(DATEDIF(B2,C2,"d")+1),0)))
数据:
A B C D
1 Name Start Date End Date Contract % Complete
2 Allen 8/21/17 8/24/18 100.00%
3 Billy 12/4/17 12/8/18 72.16%
4 Charles 9/6/18 12/28/18 #NUM!
答案 0 :(得分:0)
问题在于日期不能为负数,而DATEDIF(B2,TODAY(),"d")
试图返回负日期。
如果该日期是将来的日期,则0%
完成。
添加IFERROR来解决该问题:
=IFERROR(IF(ISBLANK(B2),"",IF((DATEDIF(B2,TODAY(),"d")+1)/(DATEDIF(B2,C2,"d")+1)>99.99%,1,IFERROR((DATEDIF(B2,TODAY(),"d")+1)/(DATEDIF(B2,C2,"d")+1),0))),0)
因为使用Excel的1天等于1天,所以我们可以摆脱DATEDIF
。然后使用MAX和MIN摆脱嵌套的IF和IFERROR,我们可以将公式简化为:
=IF(ISBLANK(B2),"",MAX(MIN((TODAY()-B2+1)/(C2-B2+1),1),0))