上个星期一的日期Excel
今天是2013年2月27日这是Wensday。 我需要一个公式,它会返回我前一个星期一的日期。这将是(2013年2月17日)上个星期一的日期Excel
我需要这样才能用于发送电子邮件的vba代码中的文件名或电子邮件主题。
With oMail
'Uncomment the line below to hard code a recipient
.To = "[email protected]"
'Uncomment the line below to hard code a subject
.Subject = "Current Report"
.Attachments.Add WB.FullName
.Display
End With
Public Function LastMonday(pdat As Date) As Date
LastMonday = DateAdd("ww", -1, pdat - (Weekday(pdat, vbMonday) - 1))
End Function
平日(yourdate,vbMonday)返回星期一,2 1星期二等等
pdat - (Weekday(pdat, vbMonday) - 1)
将通过从传递的日期减去Weekday() - 1#日给我们最近的星期一。
DateAdd("ww", -1, ...)
从该日期减去一周。
LastMonday(cdate("2/27/13"))
返回2013年2月18日(这是星期一,而不是17日)
嗨,我该如何使用?输入'= DateAdd(“01/01/2013”)'? – Mowgli 2013-02-27 17:30:40
如果你在VBA模块中包含这个函数,那么你可以这样做:strSubject =“今天的主题是关于上周一(”&Format(LastMonday(Date),“mm/dd/yyyy”)&“)” With oMail .Subject = strSubject End With – 2013-02-27 17:39:52
计算平日(现在())和2(=工作日为星期一)之间的差值,然后加入7.
你确定会返回**前一个星期一 - 不是下一个? – 2013-02-27 16:59:39
彼得,我应该更具体。如果您将差异添加到7,然后从今天开始减去,那么您应该以前一个星期一结束! – 2013-02-27 17:14:01
编辑这个答案包括一个具体的例子(单元格内计算)花了几分钟后搞清楚了我自己。“= TODAY() - (WEEKDAY(TODAY(),3)+7)” – goofology 2017-09-13 02:06:24
丹的答案应该涵盖VBA
或在Excel工作表中公式你的需求,你可以做这样的事情:
=TEXT(DateCell- (WEEKDAY(DateCell,2)-1),"dddd mmmm dd")
因此DateCell是一个范围,包含您想查找上一个星期一的日期的日期!
所以如果你把08/04/2012放在DateCell中,那么这个公式将会在4月2日星期一重播!
(信贷MrExcel.com和谷歌搜索!) HTH 菲利普
要接受的答案的功能有点更灵活,一个微小的改动,您可以指定一周中的哪一天,并有多远后退/前进你想要它。再次
dim myDt as date
dim nextWed as date
myDt = now()
// Get next Wednesday (dow = Wednesday, weeksOffset is +1
x = LastDow(myDt, vbWednesday, 1)
由于原来的解决方案作者(丹Meltheus):
Public Function LastDow(pdat As Date, dow as integer, _&
optional weeksOffset = -1 as integer) As Date
LastDow = DateAdd("ww", weeksOffset, pdat - (Weekday(pdat, dow) - 1))
End Function
有了这个功能,你可以得到,说了,下周三。
那么,你到目前为止尝试过什么?如果你还没有尝试过任何东西,那么也许这会让你开始:http://msdn.microsoft.com/en-us/library/aa227527(v=vs.60).aspx – Sam 2013-02-27 16:05:49
@Sam,你的链接缺失一个右括号。 – 2013-02-27 16:07:52
@DougGlancy是吗?这个对我有用。我无法使用内置的SO链接功能,因为MSDN链接本身包含括号。在编辑之前你有没有看到它? – Sam 2013-02-27 16:12:34