查找选定月份的最后选定日期
Find Last Chosen Day of a Chosen Month
我有这段代码可以让我找到给定月份的第一天或最后一天。
=日期(B2,A2,1+7*n)-工作日(日期(B2,A2,8-xday))
- B2 = 年
- A2 = 月份
- n = 我想找到第 1 次、第 2 次、第 3 次、第 4 次或第 5 次出现的事件吗
- xday = 是一个代表星期几的数字(1 = Sun 到 7 = Sat)
我想要的东西只能找到给定月份的最后一天,而不必弄清楚该月是否有 4 个或 5 个星期一。
如果有人能告诉我如何在 VBA 中创建我想要的结果,那就完美了。
对于此数据布局,
D2中的公式为,
=EOMONTH(A,0)-WEEKDAY(EOMONTH(A,0)-C2)*(WEEKDAY(EOMONTH(A,0))<>C2)
C2:C8 和 c11:C17 只是 1->7 格式为 ddd.
8 月上周二(工作日 3)的 VBA 会是这样。
dim lastDate as date
'last Tue in Aug-2015
lastDate = dateserial(2015, 9, 0)-abs(weekday(dateserial(2015, 9, 0)-3)*(weekday(dateserial(2015, 9, 0))<>3))
debug.print lastDate
'last Sat in Jul-2015
lastDate = dateserial(2015, 8, 0)-abs(weekday(dateserial(2015, 8, 0)-7)*(weekday(dateserial(2015, 8, 0))<>7))
debug.print lastDate
请注意,工作表 EOMONTH function is simply the zero day of the next month. The Abs function 的 VBA 快捷方式是必需的,因为 VBA 将 True 视为 -1,而不是工作表中的 1。
感谢@Dave 并由我编辑,我的问题的答案是:
=IF(DATE(B2,D4,36)-DAY(DATE(B2,D4,8-xday))<DATE(B2,D4+1,1),DATE(B2,D4,36)-DAY(DATE(B2,D4,8-xday)),DATE(B2,D4,29)-DAY(DATE(B2,D4,8-xday)))
其中:
- B2 = 年
- D4 = 月份 (1-12)
- Xday = 第 (1-7) 天
我有这段代码可以让我找到给定月份的第一天或最后一天。
=日期(B2,A2,1+7*n)-工作日(日期(B2,A2,8-xday))
- B2 = 年
- A2 = 月份
- n = 我想找到第 1 次、第 2 次、第 3 次、第 4 次或第 5 次出现的事件吗
- xday = 是一个代表星期几的数字(1 = Sun 到 7 = Sat)
我想要的东西只能找到给定月份的最后一天,而不必弄清楚该月是否有 4 个或 5 个星期一。
如果有人能告诉我如何在 VBA 中创建我想要的结果,那就完美了。
对于此数据布局,
D2中的公式为,
=EOMONTH(A,0)-WEEKDAY(EOMONTH(A,0)-C2)*(WEEKDAY(EOMONTH(A,0))<>C2)
C2:C8 和 c11:C17 只是 1->7 格式为 ddd.
8 月上周二(工作日 3)的 VBA 会是这样。
dim lastDate as date
'last Tue in Aug-2015
lastDate = dateserial(2015, 9, 0)-abs(weekday(dateserial(2015, 9, 0)-3)*(weekday(dateserial(2015, 9, 0))<>3))
debug.print lastDate
'last Sat in Jul-2015
lastDate = dateserial(2015, 8, 0)-abs(weekday(dateserial(2015, 8, 0)-7)*(weekday(dateserial(2015, 8, 0))<>7))
debug.print lastDate
请注意,工作表 EOMONTH function is simply the zero day of the next month. The Abs function 的 VBA 快捷方式是必需的,因为 VBA 将 True 视为 -1,而不是工作表中的 1。
感谢@Dave 并由我编辑,我的问题的答案是:
=IF(DATE(B2,D4,36)-DAY(DATE(B2,D4,8-xday))<DATE(B2,D4+1,1),DATE(B2,D4,36)-DAY(DATE(B2,D4,8-xday)),DATE(B2,D4,29)-DAY(DATE(B2,D4,8-xday)))
其中:
- B2 = 年
- D4 = 月份 (1-12)
- Xday = 第 (1-7) 天