我需要解决只给出了日期的日部分当前周(例如2017年4月1日)内的日期,这可能与Excel VBA? 我已经看过像这样的excel vba - How to get the Day Name of Date? 的问题,但他们回答不同的问题。我也研究过使用像vbTuesday这样的常量,但他们没有帮助,因为我仍然需要弄清楚如何将当天的名字连接到当前的星期。Excel VBA - 有没有一种方法可以在当前一周中获得日期,只给定日期名称?
0
A
回答
1
的主要问题是把你一天的名称为天数 - 因此周二或周二返回1日(星期一为0天)。
在第一个想到我会使用一个Select Case
声明VBA,但有可能是一个更好的办法。
下面的代码将计算星期一日期(dReturnDate
),然后添加一个数字取决于你问的天。无意义的日期名称将返回#Num
错误。
Public Function DateFromDay(DayName As String) As Variant
Dim dReturnDate As Date
Dim lDayNumber As Long
dReturnDate = Date - Weekday(Date - 2)
Select Case DayName
Case "Mon", "Monday"
lDayNumber = 0
Case "Tue", "Tuesday"
lDayNumber = 1
Case "Wed", "Wednesday"
lDayNumber = 2
Case "Thu", "Thursday"
lDayNumber = 3
Case "Fri", "Friday"
lDayNumber = 4
Case "Sat", "Saturday"
lDayNumber = 5
Case "Sun", "Sunday"
lDayNumber = 6
Case Else
lDayNumber = -1
End Select
If lDayNumber >= 0 Then
DateFromDay = dReturnDate + lDayNumber
Else
DateFromDay = CVErr(xlErrNum)
End If
End Function
工作表:
=DateFromDay("Tuesday")
返回2017年4月18日
=DateFromDay("Any Day")
回报#Num!
1
在很大程度上取决于你是否要使用vbUseSystemDayOfWeek
或者如果单纯治疗星期一作为第1天是可以接受的。您还会需要额外的代码,如果你想接受,例如,“星期一”和“星期一”,如果你想保护的查找与UCase
。
原则,不过,该功能可能是简单的:
Public Function DateFromDayName(dayName As String) As Date
Dim d As Long
d = WorksheetFunction.Match(dayName, _
Array("Monday", _
"Tuesday", _
"Wednesday", _
"Thursday", _
"Friday", _
"Saturday", _
"Sunday"), _
0)
DateFromDayName = Now - Weekday(Now, vbMonday) + d
End Function
相关问题
- 1. php当前周日名称与日期
- 2. 有没有一种方法可以获得给定年份Java的给定weekNo的开始日期?
- 3. XCOPY:有没有办法只获得一个特定的日期?
- 4. 有没有办法获得本月的一周的日期?
- 5. 参考当前日期获取一周中的日期数组
- 6. 获取当前周日和周日以前的日期
- 7. 如何获得特定一周中特定日期的日期
- 8. 将日期转换为日期名称周一,周二,周三
- 9. 获得一周的第一天的日期在给定日期PHP
- 10. Excel - 如何获取日期是一周中的特定日期?
- 11. 在Excel中找到日期之前的周一或周日
- 12. Jodatime是否有一种方法可以获得自某个较旧日期以来的月份和日期?
- 13. 如何获得所有在c日期的2日期之间给出的“日期名称”日期
- 14. 以给定开始日期和结束日期的一周为间隔获取所有日期
- 15. 获取当前时间没有日期
- 16. 有没有一种更有效的方式来获得在C#中的给定日期的前一个星期一
- 17. 如何在android中使用特定日期获取当前日期名称?
- 18. 如何获得一周的当前日期和播放框架
- 19. JavaScript - 从当前日期开始获得每周的第一天
- 20. 有没有一种方法,我们可以设置日期选取器值系统日期
- 21. 获得当前日期localtime_s
- 22. 在Excel中格式化日期以使用Access VBA显示当前日期
- 23. 上周一不是当前日期
- 24. C#前一周日期
- 25. 有没有一种方法可以获得共享首选名称?
- 26. 有没有一种解决方法可以使DateAxis在范围内的第一个日期前打勾
- 27. PHP如何获得给定日期下周的星期一和星期日的日期?
- 28. 从Datetime.Now查找当前周,以及如何查找当前周日期之间的给定日期?
- 29. 回显日期,距离当前日期一周
- 30. 选择当前日期和一周之间的日期InnoDB
究竟是输入?像这样的工作:'?Clng(Format(now + 5,“ww”))''如果你把它写在直接窗口中?它给出当天+5天的一周。 – Vityata
输入是一个字符串的日期名称(从下拉列表中选择,例如“Monday”)。谢谢,我现在就试试。编辑:不知道这是我真正的后。 'd = CLng(格式(“星期一”+ 5,“ww”))'给出类型不匹配错误。 – warsong