我正在为Excel编写一些VBA,我需要弄清楚当前或即将到来的星期六的日期
所以,如果是星期五,我需要明天(星期六)。
如果今天是星期六那么我只想要今天的约会。
如果是星期天那么我需要昨天的日期。
如果是星期一,那么下周六
我想知道Excel或VBA中是否有任何可以帮助我完成此任务的内容
答案 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)