首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >#NUM!公式计算%完成以后日期时出现的错误

#NUM!公式计算%完成以后日期时出现的错误
EN

Stack Overflow用户
提问于 2018-08-27 15:16:06
回答 1查看 156关注 0票数 1

我有一个工作表,上面显示了员工的外派,以及他们的合同开始和结束日期。在D栏中,我计算该合同完成的百分比。

我的公式适用于当前和过去的日期,但是未来的日期会导致#NUM!我有一种感觉,这是因为计算要么不可能,要么小于0。

我已经试过纠正这个问题了,但它正在击败我。有什么解决办法吗?

公式:

代码语言:javascript
运行
复制
=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)))

数据:

代码语言:javascript
运行
复制
    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!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 15:22:54

问题是,日期不能为负数,而DATEDIF(B2,TODAY(),"d")试图返回一个负日期。

如果日期是在未来,那么它是0%完成。

增加一个IFERROR来处理这一问题:

代码语言:javascript
运行
复制
=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,我们可以将公式简化为:

代码语言:javascript
运行
复制
=IF(ISBLANK(B2),"",MAX(MIN((TODAY()-B2+1)/(C2-B2+1),1),0))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52042332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档