gpt4 book ai didi

excel - 返回当前月份的第一个日期和最后一个日期的函数

转载 作者:行者123 更新时间:2023-12-04 20:04:41 26 4
gpt4 key购买 nike

我创建了一个函数来获取 MS Access 表单和报告中的星期四作为星期四的第一个日期,但它返回上个月一周的第一天。

我需要它只返回当前月份的日期。如果当前周的第一天在上个月,则返回一周的第一天作为当前月的一周的第一天。

电流输出

当从日期选择器中选择 1-10-2018 时,它返回 27-09-2018,这是上个月一周的第一个日期,但我需要它返回在文本框中选择的月份的第一天。

Function GetFirstofWeek(dtDate As Date)
GetFirstofWeek = DateAdd("d", dtDate, -(Weekday(dtDate)) + 1)
' Excel formula for this function which is perfect and may be converted to function as required ‘=MAX(B2-WEEKDAY(B2,14)+1, EOMONTH(B2, -1)+1)
GetFirstofWeek = DateAdd("d", dtDate, -(Weekday(dtDate, vbThursday) - 1))
End Function

对于一周的最后一天
Function GetLastofWeek(dtDate) as date
'=MIN(B2+(7-WEEKDAY(B2,14)), EOMONTH(B2, 0))
‘this excel formula return date as I need.
GetLastofWeek = DateAdd("d", dtDate, (7 - (Weekday(dtDate, vbWednesday)) + 1))

End Function

在此函数中,最后一周的日期必须在当前月份,如果月末在该周的第一个日期结束,则该周的最后一个日期将是一周的第一个日期或当前周剩余的天数。

最佳答案

除非我误解了您的要求,否则请考虑以下两个功能:

第一周

Function FirstOfWeek(datRef As Date) As Date
If Day(datRef) >= Weekday(datRef, vbThursday) Then
FirstOfWeek = DateAdd("d", 1 - Weekday(datRef, vbThursday), datRef)
Else
FirstOfWeek = DateAdd("d", 1 - Day(datRef), datRef)
End If
End Function

一些例子:
?FirstOfWeek(#2018-10-04#)
04/10/2018

?FirstOfWeek(#2018-10-10#)
04/10/2018

?FirstOfWeek(#2018-10-11#)
11/10/2018

?FirstOfWeek(#2018-10-03#)
01/10/2018

在这里,该函数测试是否要减去天数以获得您的 Thursday->Wednesday 的第一天。 week 将小于当月的天数,如果是,则返回当月的第一天。

表达式 DateAdd("d", 1 - Day(datRef), datRef)也可以写成 DateSerial(Year(datRef), Month(datRef), 1)以获得相同的结果。

最后一周
Function LastOfWeek(datRef As Date) As Date
LastOfWeek = DateAdd("d", 7 - Weekday(datRef, vbThursday), datRef)
If Day(datRef) > Day(LastOfWeek) Then
LastOfWeek = DateSerial(Year(datRef), Month(datRef) + 1, 0)
End If
End Function

一些例子:
?LastOfWeek(#2018-10-04#)
10/10/2018

?LastOfWeek(#2018-10-03#)
03/10/2018

?LastOfWeek(#2018-09-27#)
30/09/2018

和第一个函数类似,这个函数首先计算下面 Wednesday的日期然后检查该日期的天数是否小于提供日期的天数(表明已误入下个月)。如果是,则返回当月的最后一天。

关于excel - 返回当前月份的第一个日期和最后一个日期的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com