Excel 如何从datetime值中提取日期以检查两个日期之间的周末?

Excel 如何从datetime值中提取日期以检查两个日期之间的周末?,excel,vba,Excel,Vba,我需要检查两次约会之间的周末 行数据: 29/11/2019 12:45:43 and 30/11/2019 12:45:43 我的代码: Function Check_Weeknd(start_date As Date, end_date As Date) As Boolean While start_date <> end_date start_date = DateAdd("d", 1, start_date) If Weekday(start_dat

我需要检查两次约会之间的周末

行数据:

29/11/2019  12:45:43  and 30/11/2019  12:45:43
我的代码:

Function Check_Weeknd(start_date As Date, end_date As Date) As Boolean

While start_date <> end_date
    start_date = DateAdd("d", 1, start_date)
    If Weekday(start_date) = 7 Then
         Check_Weeknd = True
    End If
 Wend
 End Function
函数检查\u Weeknd(开始日期为日期,结束日期为日期)为布尔值
而开始日期结束日期
开始日期=日期添加(“d”,1,开始日期)
如果工作日(开始日期)=7,则
检查\u Weeknd=True
如果结束
温德
端函数

您可以使用类似的方法避免循环

Function check_weekend(dtStart As Date, dtEnd As Date) As Boolean

check_weekend = DateDiff("d", dtStart, dtEnd) - _
                WorksheetFunction.NetworkDays(dtStart, dtEnd) > 0

End Function

你可以用这样的方法来避免循环

Function check_weekend(dtStart As Date, dtEnd As Date) As Boolean

check_weekend = DateDiff("d", dtStart, dtEnd) - _
                WorksheetFunction.NetworkDays(dtStart, dtEnd) > 0

End Function
尝试:

我添加了
Int
函数来显示如何消除时间,但是在这个函数中它不是必需的,因为
Weekday
只在日期部分操作

也许更好一点:no
Int
函数,第二个日期输入是可选的,因此如果需要,您可以测试单个日期:

Function Check_Weeknd(start_date As Date, Optional end_date As Date) As Boolean
    Dim D As Date
    If end_date = 0 Then end_date = start_date
    For D = start_date To end_date
        If Weekday(D) = vbSaturday Or _
            Weekday(D) = vbSunday Then
                Check_Weeknd = True
                Exit Function
        End If
    Next D
 End Function
尝试:

我添加了
Int
函数来显示如何消除时间,但是在这个函数中它不是必需的,因为
Weekday
只在日期部分操作

也许更好一点:no
Int
函数,第二个日期输入是可选的,因此如果需要,您可以测试单个日期:

Function Check_Weeknd(start_date As Date, Optional end_date As Date) As Boolean
    Dim D As Date
    If end_date = 0 Then end_date = start_date
    For D = start_date To end_date
        If Weekday(D) = vbSaturday Or _
            Weekday(D) = vbSunday Then
                Check_Weeknd = True
                Exit Function
        End If
    Next D
 End Function

Weekday()
函数是7,它告诉您今天是星期六。这是你的意图吗?您是否查看了
DateDiff()
?不清楚你说的“周末检查”是什么意思。是的,我想知道这是不是周末。然后我收到指示(真),所以周日不算周末?为什么?我将其计算为Weekend函数的
Weekday()
值为7表示今天是星期六。这是你的意图吗?您是否查看了
DateDiff()
?不清楚你说的“周末检查”是什么意思。是的,我想知道这是不是周末。然后我收到指示(真),所以周日不算周末?为什么?我认为这是周末的事,我不明白这个逻辑。你能解释一下吗?@Bimka09谷歌学习一下,这是两个excel函数
DateDiff
NetworkDays
我知道,但这不是我想要的。它检查从实际天数
DateDiff
中减去的两个日期之间的工作日
NetworkDays
是否大于0
.0
对不起,我不理解这个逻辑。你能解释一下吗?@Bimka09谷歌并学习它,它是两个excel函数
DateDiff
NetworkDays
我知道,但这不是我想要的。它检查两个日期之间的工作日
NetworkDays
从实际天数
DateDiff
中减去的天数是否大于0
>0