我使用以下公式来获取该月的第 n 个 xday:
=DATE(B2,A2,1+7*n)-WEEKDAY(DATE(B2,A2,8-xday))
其中年份在 B2 中,月份(从 1 到 12 的数字)在 A2 中,并且xday
是表示星期几的数字(1 = 星期日至 7 = 星期六),因此对于第一个星期六,结果变为:
=DATE(B2,A2,1+7*1)-WEEKDAY(DATE(B2,A2,8-7))
现在,这适用于有 4 周的月份。我该如何修改此公式来计算月份何时有 5 周?
答案1
作为一个快速而丑陋的解决方案,你可以说
=IF(MONTH(DATE($B$2,$A$2,1+7*n)-星期几(日期($B$2,$A$2,8-日))) = 2澳元, 日期($B$2,$A$2,1+7*n)-星期几(日期($B$2,$A$2,8-日)), “不存在的日期”)
即,如果您的公式计算出的日期在正确的月份,请使用它。如果已经溢出到下个月的第一周,则不要使用它。
答案2
尝试这个公式
=(B2&"-"&A2&"-"&1+7*n-WEEKDAY(DATE(B2,A2,8-xday)))+0
它的作用实际上和原来的相同,只是它将日期构建为文本字符串,例如,对于 2012 年 10 月的第 5 个星期二,它将创建此文本字符串
2012-10-30
....然后末尾的 +0 将该字符串强制转换为日期,即 2012 年 10 月 30 日。但如果没有第 5 个 xday,则创建的字符串不是有效日期,例如,对于 10 月的第 5 个星期六,您将得到 2012-10-34。显然这不是有效日期,因此当您添加零时,强制转换不起作用,您会得到 #VALUE!错误。如果您更喜欢短信,那么只需使用 IFERROR,如下所示
=IFERROR((B2&"-"&A2&"-"&1+7*n-WEEKDAY(DATE(B2,A2,8-xday)))+0,"No 5th day")