VBA:DateDiff不会返回确切的工作日

时间:2018-02-18 11:12:46

标签: excel excel-vba vba

我的总经理让我跟踪我们公司当前项目的工作日,这些项目记录在一个excel文件中,他希望我在剩余的工作日内为新栏目制作新栏目。我尝试在下面的代码中使用网络中的函数来获取日期的范围:

Function RDays(pDate1 As Date, pDate2 As Date) As Long
    RDays = DateDiff("d", pDate1, pDate2)
End Function

但结果是我只获得31作为最大天数的值,当值大于31时,该值返回1 ..

这段代码会出现什么问题?

2 个答案:

答案 0 :(得分:1)

excel内置NETWORKDAYS(start_date, end_date, [holidays])函数可以很好地返回两个日期之间的工作日数。

更多信息:https://support.office.com/en-ie/article/networkdays-function-48e717bf-a7a3-495f-969e-5005e3eb18e7

答案 1 :(得分:-3)

嗯,首先,它是Excel中的Datedif,而不是Datediff,它是SQL Server。

这是一般函数,带参数:

=DATEDIF (start_date, end_date, unit)

以下是参数:

Unit    Return value
"Y"     Difference in complete years
"M"     Difference in complete months
"D"     Difference in days
"MD"    Difference in days, ignoring months and years
"YM"    Difference in months, ignoring days and years
"YD"    Difference in days, ignoring years