如果函数具有公式以计算日期之间的差异

时间:2020-09-05 21:27:05

标签: excel vba

我正在尝试使用networkdays查找两个日期之间的差异,此外,如果两个日期相等,则必须将值设为0。但无法获得结果。

enter image description here

3 个答案:

答案 0 :(得分:0)

您可以尝试

if(DATEVALUE(A1)=DATEVALUE(A2),0,NETWORKDAYS(A1+1,B1)

答案 1 :(得分:0)

为什么将公式参数用引号引起来?只是将它们更改为字符串,这就是您的公式不起作用的原因。

我从您的公式中假设您只是不想计算第一天。在这种情况下,只要您删除双引号,它将如您所愿。

enter image description here

答案 2 :(得分:0)

@Ron Rosenfeld指出我的测试导致了错误的结论。因此,我增加了测试量。他们继续证明...

  1. 比较两个日期并添加一天会得出不稳定的结果,
  2. Microsoft设计的裸露NETWORKDAYS函数提供了最有用的结果。

在下面的表中,原始函数在C列中,您的函数(由@Ron Rosenfeld修改为工作)在D列中,并且在E和F列中有两个变化。该表的下部显示了两天的结果日期是相同的,而日期相隔两天。

enter image description here

这些表显示原始公式对开始和结束日期以及它们之间的所有天进行计数,减去周末,除非开始和结束日期相同。换句话说,原始函数已经以不同的方式对待A1 = B1的情况。

但是,如果要进行调整,则最好对公式的结果进行调整,而不要在处理之前修改日期。在F列中对此进行了演示。

E列中的公式占用了您尝试修改日期之一(结束日期也可以修改)的条件,并使其成为条件。与公式相比,差异在于您实际上应用了两个单独的计算,一个计算的结果始终为0(当日期相等时),而另一个计算的开始日期无条件地提前了一天。如果适合您的目的,该方法仍然可以应用,但是E列中的公式显示了如何可以有条件地修改日期。

应用条件的需要是由于公式的错误之处在于它的根本缺陷。基本功能中已经包含了日期相等的不同处理方式。任何进一步的修改都必须考虑到所涉及的工作日,而不是(必须)仅考虑日期之间的间隔。

相关问题