查找所选月份的最后一天

时间:2015-08-08 03:06:16

标签: excel date find dayofweek

我有这个代码,可以让我找到给定月份的第一天或最后一天。

= DATE(B2,A2,1 + 7 * N)-WEEKDAY(DATE(B2,A2,8-xday))

  • B2 =年
  • A2 =月
  • n =我想找到第1次,第2次,第3次,第4次或第5次出现
  • xday =是表示星期几的数字(1 =从太阳到7 =周六)

我想要的东西只能找到给定月份的最后一天,而我不必弄清楚月份是星期一还是4或5。

如果有人可以告诉我如何在VBA中创建我想要的结果,那将是完美的。

2 个答案:

答案 0 :(得分:1)

对于此数据布局,

Last weekday in eomonth

D2中的公式是,

=EOMONTH(A$2,0)-WEEKDAY(EOMONTH(A$2,0)-C2)*(WEEKDAY(EOMONTH(A$2,0))<>C2)

C2:C8和c11:C17只是1-> 7格式为 ddd

VBA对于8月份的上周二(工作日 3 )就是这样的。

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的VBA快捷方式只是下个月的零日。 Abs function是必要的,因为VBA将True视为-1,而不是像工作表一样。

答案 1 :(得分:0)

我的问题的答案归功于@Dave&amp;我编辑的是:

=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)