发现选定月份的最后一天
我有这个代码,可以让我find给定的月份的第一个或最后一个给定的一天。
= DATE(B2,A2,1 + 7 * N)-WEEKDAY(DATE(B2,A2,8-xday))
- B2 =年
- A2 =月
- 我是否想find第一,第二,第三,第四或第五个事件
- xday =是代表星期几的数字(1 = Sun到7 = Sat)
我想要的东西只能find给定月份的最后一天,而不需要确定月份是否有4或5个星期一。
如果有人能告诉我如何在VBA中创build我想要的结果,那将是完美的。
对于这个数据布局,
D2中的公式是,
=EOMONTH(A$2,0)-WEEKDAY(EOMONTH(A$2,0)-C2)*(WEEKDAY(EOMONTH(A$2,0))<>C2)
C2:C8和C11:C17只是1→7格式化为ddd 。
8月份上周二(周三)的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函数的 VBA快捷方式只是下个月的零日。 Abs函数是必要的,因为VBA将True视为-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 = Day(1-7)