我有一个工作表,上面显示了员工的外派,以及他们的合同开始和结束日期。在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!发布于 2018-08-27 15:22:54
问题是,日期不能为负数,而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)

因为1天到Excel是1,我们可以摆脱DATEDIF。然后使用MAX和MIN消除嵌套的IF和IFERROR,我们可以将公式简化为:
=IF(ISBLANK(B2),"",MAX(MIN((TODAY()-B2+1)/(C2-B2+1),1),0))

https://stackoverflow.com/questions/52042332
复制相似问题