如何找出下周六或当前周六的日期?

时间:2017-08-03 12:24:53

标签: excel vba excel-vba date

我正在为Excel编写一些VBA,我需要弄清楚当前或即将到来的星期六的日期

所以,如果是星期五,我需要明天(星期六)。

如果今天是星期六那么我只想要今天的约会。

如果是星期天那么我需要昨天的日期。

如果是星期一,那么下周六

我想知道Excel或VBA中是否有任何可以帮助我完成此任务的内容

4 个答案:

答案 0 :(得分:5)

在Excel中,您可以使用以下公式:

=TODAY()-WEEKDAY(TODAY())+IF(WEEKDAY(TODAY())>1, 7, 0)

答案 1 :(得分:1)

如果你不只是使用excel并且需要它用于其他vba项目,那么这会得到你想要的结果。

Private Function saturdayFunction()
    Dim dt As String
    Dim lpDT As String

    lpDT = Format(Now, "yyyy/MM/dd")

    If Format(Now, "DDDD") = "Saturday" Then
        dt = Format(Now, "yyyy/MM/dd")
    ElseIf Format(Now, "DDDD") = "Sunday" Then
        dt = Format(Now - 1, "yyyy/MM/dd")
    Else
        Do While Not dt = "Saturday"
            dt = Format(CDate(lpDT) + 1, "DDDD")
            lpDT = Format(CDate(lpDT) + 1, "yyyy/MM/dd")
        Loop

        dt = lpDT
    End If

    saturdayFunction = dt
End Function

答案 2 :(得分:1)

使用vbDays变量和Select Case可以轻松理解这些内容。

一般来说,你有3个案例 - 今天是星期六,星期日或其他。这些在Select Case中显示。

该函数是日期,因此在Excel中它将被格式化为标准日期结果。

Option Explicit

Public Function SaturdayIsComing() As Date

    Select Case Weekday(Now)

        Case vbSaturday
        SaturdayIsComing = Now

        Case vbSunday
        SaturdayIsComing = DateAdd("d", -1, Now)

        Case Else
        SaturdayIsComing = DateAdd("d", vbSaturday - Weekday(Now), Now)

    End Select

End Function

答案 3 :(得分:0)

试试这个。将格式化单元格设置为"日期"

=TODAY()+6-WEEKDAY(TODAY(),2)